以下C代码正确执行,但未按预期执行。 z=z++
中的后递增运算符在此处造成混乱。我可能无法找出愚蠢的错误/概念,请给我一个简短的解释或一些有用的链接。
#include<stdio.h>
int main()
{
int x=5,y=6,z=7;
if(x-y)
z=z++;
z=--z;
printf("%d",z);
}
答案 0 :(得分:0)
您不允许执行z=z++;
,因为在2个序列点之间您不能分配2次变量。
这是一个完整的表达式,您可以在其中分配z 2次。因此它可以被模糊地解释,并且C抽象机的结果为undefined behavior。
与z=--z
相同。
答案 1 :(得分:-1)
由于if条件5-6 = -1为false,因此永远不会执行z = z ++。因此,仅执行z = --z并得出答案6