#include int main(void) { int i=1,j=-1; if((printf("%d",i))<(printf("%d",j))) printf("%d",i); else printf("%d",j); return 0; }
Como printf()
devuelve el número de caracteres impresos con éxito, la condición será if(1<1)
que es falsa pero la parte if se ejecuta y la salida es 1 -1 1
. ¿Por qué sucede esto?
Creo que es bastante obvio: ‘1’ es un carácter, ‘-1’ es dos. Uno es menos de dos.
printf devuelve el número de caracteres (no solo los dígitos) escritos.
Así que printf("%d",-1)
devolverá 2
no 1
De forma similar, printf("%d",1)
devolverá 1
Haciendo la condición en el if
verdadero.
Porque imprimir j imprime “-1”, son dos caracteres. entonces 1 <2 es verdadero.
Para -1
número de caracteres impresos es 2
por lo tanto, si se cumple la condición.