Estoy tratando de establecer la igualdad de tres variables iguales, pero el siguiente código no imprime la respuesta correcta obvia que debe imprimir. ¿Alguien puede explicar cómo el compilador está analizando internamente el if(condition)
dado?Dos '==' operadores de igualdad en la misma condición 'si' no funcionan como se pretende
#include<stdio.h>
int main()
{
int i = 123, j = 123, k = 123;
if (i == j == k)
printf("Equal\n");
else
printf("NOT Equal\n");
return 0;
}
Salida:
[email protected]:~$ gcc -Wall -pedantic calc.c
calc.c: In function ‘main’:
calc.c:5: warning: suggest parentheses around comparison in operand of ‘==’
[email protected]:~$ ./a.out
NOT Equal
[email protected]:~$
EDIT:
A juzgar por las respuestas dadas a continuación, es la siguiente declaración bien para comprobar por encima de la igualdad?
if ((i==j) == (j==k))
que necesita ((i == j) && (j == k)) –
tu edición pruebas si 'i == J' tiene el mismo valor que' j == K' . ¿Qué sucede para 'i = 1',' j = 2', 'k = 3'? No adivine, intente averiguarlo: por ejemplo, ¿cuál es el valor de '1 == 2'? –
[Soporte de idioma para operadores de comparación encadenados (x