关于输出的困惑

时间:2010-10-07 06:55:35

标签: c

#include<stdio.h>
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。为什么会这样?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

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

同样printf("%d",1)将返回1

使if中的条件为真。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

相关问题