Operator Precedence
Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 38 de 66.
A precedência de operadores determina a ordem em que os operadores são avaliados em uma expressão. Compreender a precedência é crucial para escrever expressões lógicas corretas.
Veja este exemplo:
int result = 5 + 3 * 2;Qual é o valor de result? É 11, não 16, porque a multiplicação tem maior precedência que a adição.
Aqui está uma ordem de precedência simplificada (da mais alta para a mais baixa):
- Parênteses
() - Multiplicação/Divisão
* / % - Adição/Subtração
+ -
- Operadores de comparação
< > <= >= - Operadores de igualdade
== !=
- AND lógico
&& - OR lógico
|| - Operadores de atribuição
= += -=etc.
Vamos ver como isso se aplica:
bool result = 5 > 3 && 10 < 20 || 7 == 8;Primeiro, as comparações são avaliadas: 5 > 3 é true, 10 < 20 é true, e 7 == 8 é false.
Em seguida, AND lógico: true && true é true.
Finalmente, OR lógico: true || false é true.
Então o resultado é true.
Use parênteses para tornar seu código mais claro:
bool result = (5 > 3 && 10 < 20) || (7 == 8);Desafio
FácilCrie um método chamado EvaluateExpression que recebe três inteiros (a, b, c) e retorna um booleano.
Seu método deve retornar o resultado desta expressão:a > b || a == c && b < c
Em seguida, crie outro método chamado EvaluateWithParentheses que avalia:(a > b || a == c) && b < c
Seu programa deve ler três inteiros do console e imprimir os resultados de ambas as avaliações em linhas separadas.
Folha de consulta
A precedência de operadores determina a ordem em que os operadores são avaliados em uma expressão.
Ordem de precedência (da mais alta para a mais baixa):
- Parênteses
() - Multiplicação/Divisão
* / % - Adição/Subtração
+ - - Operadores de comparação
< > <= >= - Operadores de igualdade
== != - AND lógico
&& - OR lógico
|| - Operadores de atribuição
= += -=etc.
Exemplo:
int result = 5 + 3 * 2; // result is 11, not 16Expressão lógica complexa:
bool result = 5 > 3 && 10 < 20 || 7 == 8;
// Evaluates to: true && true || false = true || false = trueUse parênteses para maior clareza:
bool result = (5 > 3 && 10 < 20) || (7 == 8);Experimente você mesmo
using System;
class Program
{
public static bool EvaluateExpression(int a, int b, int c)
{
// Escreva seu código aqui
}
public static bool EvaluateWithParentheses(int a, int b, int c)
{
// Escreva seu código aqui
}
static void Main(string[] args)
{
Console.WriteLine("Enter three integers:");
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int c = int.Parse(Console.ReadLine());
// Chame seus métodos e imprima os resultados
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety