关于输出的困惑

#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; } 

printf()返回成功打印的字符数时,条件为if(1<1) ,这是false但是if部分执行且输出为1 -1 1 。 为什么会这样?

我认为很明显:“1”是一个字符,“ – 1”是两个字符。 一个不到两个。

printf返回写入的字符数(不仅仅是数字)。

因此printf("%d",-1)将返回2而不是1

类似地, printf("%d",1)将返回1

使条件成为if

因为打印j打印“-1”,这是两个字符。 所以1 <2是真的。

对于-1 ,打印的字符数为2因此如果满足条件。