2014-02-23 108 views
0
main() 
{ 
    int a = 10, b = 5, c = 5; 
    int d; 
    d = a == (b + c); 
    printf("%d", d); 
} 

輸出:1不明白爲什麼這個輸出產生

誰能請解釋一下這個數值是如何分配到d?

+0

'1' = true。它被解析爲'd =(a ==(b + c))'。 d得到你正在做的布爾比較的結果。 –

+0

'a ==(b + c)'評估爲真或假。而且由於'd'是'in','true'的真值是1.因此結果。 – karthikr

回答

2

==具有比=更高的優先級,所以

d = a == (b + c); 

相當於:

d = (a == (b + c)); 

它測試a是否等於b + c,1如果爲true,並且0如果爲false。

1

==如果其操作數相等則返回1,否則返回0。

2

a == (b + c)是真實的,真正的是通過從編譯器1表示的,這就是爲什麼d變爲1

如果b + c總和不等於10,將用C已打印0

Remmeber假由0表示,任何其他值表示真。

因此

if(-1) 
{ 
    printf("true"); 
} 

打印true

相關問題