关于输出的困惑
#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
因此如果满足条件。