关于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条件是否成立的根本依据是==是否成立。

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