请解释在每种情况下工作。解释这个C程序的工作
为什么这两种情况具有相同的输出?
案例一:
int main (void)
{
int i = 5;
if(i == ++i) //plz explain here How values are checked
printf("Equal");
else
printf("Not Equal");
return 0;
}
//Output: Equal;
案例二:
int main (void)
{
int i = 5;
if(++i == i) //plz explain here How values are checked
printf("Equal");
else
printf("Not Equal");
return 0;
}
//Output: Equal;
但是这两个程序都正确执行 – 2011-03-14 04:20:01
@Javed Akram:是的 - 未定义行为的一个可能结果是代码似乎正常工作,甚至可能产生您期望的结果。再次,它可能不会做任何一个。当然,最常见的结果是,它似乎在测试中运行良好,然后在为客户端演示时做了一些可怕的事情。 – 2011-03-14 04:22:57
@Jerry好吧,我不认为机器代码会因演示而波动,但请尝试切换编译器(即使是简单的升级也可以做到这一点),看看你什么时候开始哭泣。 – stefan 2011-03-14 04:24:43