main()
{
int a = 10, b = 5, c = 5;
int d;
d = a == (b + c);
printf("%d", d);
}
輸出:1不明白爲什麼這個輸出產生
誰能請解釋一下這個數值是如何分配到d?
main()
{
int a = 10, b = 5, c = 5;
int d;
d = a == (b + c);
printf("%d", d);
}
輸出:1不明白爲什麼這個輸出產生
誰能請解釋一下這個數值是如何分配到d?
==
具有比=
更高的優先級,所以
d = a == (b + c);
相當於:
d = (a == (b + c));
它測試a
是否等於b + c
,1
如果爲true,並且0
如果爲false。
==
如果其操作數相等則返回1,否則返回0。
a == (b + c)
是真實的,真正的是通過從編譯器1表示的,這就是爲什麼d變爲1
如果b + c
總和不等於10,將用C已打印0
Remmeber假由0表示,任何其他值表示真。
因此
if(-1)
{
printf("true");
}
打印true
'1' = true。它被解析爲'd =(a ==(b + c))'。 d得到你正在做的布爾比較的結果。 –
'a ==(b + c)'評估爲真或假。而且由於'd'是'in','true'的真值是1.因此結果。 – karthikr