## 【我解C語言面試題系列】007 運算符優先級問題
**運算符優先級問題**
給出下面程序的運行結果:
~~~
int main()
{
?? if( 0 & 1 == 0)
????? printf("0 & 1 == 0/n");
?? else
????? printf("0 & 1 != 0/n");
??
?? if( 0 & 1 != 0)
????? printf("0 & 1 != 0/n");
?? else
????? printf("0 & 1 == 0/n");
??
?? system("pause");
?? return 0;
}
~~~
答案是:
0 & 1 != 0
0 & 1 == 0
而不是我們想象中的
0 & 1 == 0
0 & 1 == 0
== 和 != 運算符優先級要高于 &、^、|、&&、|| 運算符,所以,
if( 0 & 1 == 0) 相當于 if( 0 & (1 == 0) ) ??? 執行else。
if( 0 & 1 != 0) 相當于 if( 0 & (1 != 0) )?? 執行else。
?? 這個面試題不是要求我們強記住運算符的優先級,而是因為這個問題讓很多程序員想當然是這樣,結果最后debug后,才發覺是自己吃了虧,程序運行結果并不是自己想要的結果。這僅僅是告訴C/C++程序員一個很容易犯錯誤的陷阱。
?