2013-06-25 27 views
0
#include <stdio.h> 
int main() 
{ 
    int a = 10, b = 5, c = 5; 
    int d; 
    d = b + c == a; 
    printf("%d", d); 
} 

在上面的代碼,可以在任何一個,請向我解釋如何d = b + c == a作品?「==」運算符如何在表達式中工作?

+5

是,任何經驗豐富的C程序員可以解釋它。但是,沒有人願意爲您的谷歌「C運營商」。你必須自己做。 – 2013-06-25 10:08:53

+1

這是一個平臺,我可以清除我的疑惑。所以這樣的評論不會幫助! –

+0

[你必須做一些研究工作。](http://stackoverflow.com/help/how-to-ask)我們不是一個「gimme teh codez」網站。 – 2013-06-25 10:23:36

回答

4

基於運營商的優先級,二進制+具有比==更高的優先級。因此,該語句將被歸爲,

d = (b + c) == a; 

該海外

d = ((b + c) == a); // ==> d = (10 == 10); 

所以,d保持基於比較(b+c) == a真值是1因爲在C相比,運營商將返回1爲真和0爲假。

6

因爲算符優先的,它被解析爲

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

b + c是10,它等於a,所以d接收值1,這是C如何表示真比較。

+0

-1您在VoidPointer發佈2秒後,請勿抄襲。 '' – 2013-06-25 10:12:01

+0

@ H2CO3哦,你! :-) –

2

它的工作原理是這樣

d = (b+c) == a --> (5+5) == 10 ---> 1 

它返回1

2

+操作的優先級高於==。所以d=b+c==a;解析爲d=((b+c)==a);b+c是10
所以(10==a)判斷爲真。所以d=1;