2010-10-07 109 views
1
#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。爲什麼發生這種情況?混淆關於輸出

回答

5

我認爲這很明顯:'1'是一個字符,'-1'是兩個。一個不到兩個。

1

由於打印j打印「-1」,這是兩個字符。所以1 < 2是正確的。

+0

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

2

printf返回的書面字符(不只是位)的數量。

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

同樣printf("%d",1)將返回1

使病情在if如此。

1

對於-1打印的字符數是2因此如果條件滿足。