關於if的一個知識點:if判斷的結果由誰來決定

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條件是否成立的根本依據是==是否成立。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章