请解释每种情况下的工作情况.
为什么两种情况都有相同的输出
案例I:
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;
Run Code Online (Sandbox Code Playgroud)
案例二:
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;
Run Code Online (Sandbox Code Playgroud)
Jer*_*ock 10
这些程序都不是有效的; 如果没有序列点,则不允许读取和更新相同的变量.因此,这些程序中的任何一个都会执行未定义的行为,因此它们可能碰巧在编译器和机器上返回相同的答案这一事实并不意味着什么.