混淆关于输出

问题描述:

#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)其是假,但如果部分被执行,且输出是1 -1 1。为什么发生这种情况?混淆关于输出

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

由于打印j打印“-1”,这是两个字符。所以1 < 2是正确的。

+0

thnx ..我明白了。我有点困惑..所以thnx的答案。 – Parikshita 2010-10-07 07:01:29

printf返回的书面字符(不只是位)的数量。

所以printf("%d",-1)将返回21

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

使病情在if如此。

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