【发布时间】:2019-02-18 23:10:54
【问题描述】:
C 编程新手。为什么下面这段代码的输出不是0 20 0而是1 20 0?
printf ( "\n%d %d %d", x != 1, x = 20, x < 30 ) ;
我的理解是代码将 x 分配给 1 以外的值(1=true 因此!= true 为 0)?有人可以引导我理解逻辑吗?
【问题讨论】:
-
每个参数的求值顺序未定义。
-
如果 x 不等于 1,你在测试之前给 x 赋值了什么?
-
如果你像这样使用 GCC:
cc -Wall -W -pedantic那么你会收到这样的警告warning: operation on ‘x’ may be undefined [-Wsequence-point]
标签: c integer-arithmetic