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