Salve,
Como mencionei na aula de hoje, o executável do EP4 faz mais do que promete.
Ele aceita algumas expressões lógicas simplificadas que utilizam os operadores relacionais os operadores relacionais '<' e '>' e os operadores lógicos (simplificados) '&' e '|':
operação símbolo adição + subtração - multiplicação * divisão / exponenciação ^ troca de sinal ! atribuição = maior > menor < E lógico & OU lógico |
A tabela de precedência estendida é
()esquerda-para-direita |
operador unário ! direita-para-esquerda |
^ direita-para-esquerda |
* / esquerda-para-direita |
+ - esquerda-para-direita |
> < esquerda-para-direita |
& esquerda-para-direita |
| esquerda-para-direita |
= direita-para-esquerda |
O resultado de um operador relacional ou lógico é 1 se o resultado for verdadeiro e zero em caso contrário. Testem o executável com os dados abaixo e vejam os resultado.
B = 2 > 2 A = 1 B = 2 C = A > B C = A > B | 1 D = A < B D = A < B & 1 E = C & D F = C | D D = ((A = (B = 1) + 2) > 2*(C = 2)) A = ( (B = 1) > (C = 2) & 1)
Essa brincadeira talvez ajude a entender expressões que usamos frequentemente como
return ini == fim; if ( (x = stackPop()) == ')') ... if ( (arq = fopen(...)) == NULL) ...
Em C, diferente de zero é sinônimo de verdadeiro
while (1) { /* loop infinito */ ... } if (A) { /* equivalente a "if (A != 0)" */ ... }