首页 > 解决方案 > printf() 中的整数运算

问题描述

C 编程新手。为什么下面这段代码的输出不是0 20 0,而是它1 20 0

printf ( "\n%d %d %d", x != 1, x = 20, x < 30 ) ;

我的理解是代码将 x 分配给 1 以外的值(1=true 因此!= true 为 0)?有人可以引导我理解逻辑吗?

标签: cinteger-arithmetic

解决方案


我不知道为什么某些教育系统会如此流行地选择更具创造性的方法来教授具有未指定行为的不良代码,但是由于未指定评估这些参数的顺序,因此您的程序的行为是未定义的。

也就是说,您可能假设代码是从左到右或从右到左“运行”的,但不需要这样的事情。事实上,任何事情都可能发生,包括任何输出或我家人的谋杀。所以请不要!


推荐阅读