2011-12-29 262 views
6

在VC2008,我輸入此代碼:爲什麼2 + 1&0結果是0?

int a = 2 + 1 & 0; 

這個表達式的結果是一個 = 0

爲什麼結果是0而不是2?

+0

在C/C++中搜索運算符優先級。 – 2011-12-29 15:58:40

回答

17

因爲&運營商is evaluated after運營商和3 & 0等於0

當然,您可以在表達式周圍加上大括號來改變評估順序。 E.g:

int a = 2 + (1 & 0); 
/* a == 2 */ 
5

+具有比&更高的優先級。 Here是一個運算符優先級的完整表格。

+1

好桌子,謝謝! – Spark 2011-12-29 16:11:31