#include<stdio.h>
int main()
{
int x=15;
printf("\n%d%d%d",(x!=15),(x=20),(x>=15));
return 0;
}
在上面的程序中,期望的输出应该是:
0201
但我得到输出:
1201
我的代码有什么问题?为了实现所需的操作,它应该是什么?
函数参数的求值是无序的,即它们可以按任何特定顺序求值。而且,由于您在单个表达式中读取和修改
x
且中间没有序列点,因此会在代码中触发 未定义行为。
您需要将打印分解为单独的语句:
printf("%d\n",(x!=15));
printf("%d\n",(x=20));
printf("%d\n",(x>=15));