以下 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);
}
最佳答案
您不允许执行 z=z++;
因为在 2 个序列点之间您不允许为变量分配两次。
这是一个完整的表达式,您在其中分配 z 两次。所以它可以被解释得不明确,C抽象机的结果是 undefined behavior .
对于z=--z
也是如此。
关于c - 为什么输出是 6 而不是 7?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55029829/