if(0 & 5 == 0)
{
int a;
}
運行結果:不會執行int a 這一行。
優先級:& > ==
有關彙編代碼:
(if 0 & 5 == 0)
012F1885 xor eax,eax
//一行代碼結束
012F1887 je ......
原因:f條件是否成立的根本依據是&的結果是否爲真。當一個if語句中進行一次運算之後,就進行if判斷,後邊的運算無效。
但是當改成以下代碼之後:
if ((0 & 5) == 0)
{
int a;
}
運行結果:會執行int a這一行;
有關彙編代碼:
if((0 & 5) == 0)
009E1885 move eax,1
009E188A test eax,eax
009E188C je ......
原因:if條件是否成立的根本依據是==是否成立。