问题描述
int x = 15 ;
printf ("\n%d %d %d",x != 15,x = 20,x < 30 );
我正在研究C并解决伪代码。我试图解决它,我的答案是0 20 1
,
但是当我尝试编译并检查答案时,则为1 20 1
。
有人可以解释一下为什么会这样吗?
当我尝试将条件交换为printf ("\n%d %d %d",x < 30 );
时,我得到的答案是20 0 1
为什么会这样?
解决方法
未指定函数参数的求值顺序。因此,如果您有一个表达式可以更改一个变量的值(在条件检查中显示为其他参数),则无法保证结果。