为什么条件x!= 15评估为true给出输出1

问题描述

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

为什么会这样?

解决方法

未指定函数参数的求值顺序。因此,如果您有一个表达式可以更改一个变量的值(在条件检查中显示为其他参数),则无法保证结果。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...