c中的一系列比较操作/代表什么?

jc3wubiy  于 2023-01-04  发布在  其他
关注(0)|答案(2)|浏览(196)

我一直在研究什么是有效的C语法,什么不是,
我尝试了1<2<1,令我惊讶的是,它是一个有效的C语法。有人知道它会做什么或代表什么吗?
我试着通过测试这类表达式的取值并改变整数值来找出它,但没有发现任何模式。

plicqrtu

plicqrtu1#

在C中,当使用关系运算符(如<)时,如果条件为真,则结果始终为1,如果条件为假,则结果始终为0
由于rules on operator precedence and associativity,表达式

1<2<1

相当于:

(1<2)<1

子表达式(1<2)为真,因此其计算结果为1,因此整个表达式等效于:

1<1

由于此表达式为false,因此其计算结果为0
因此,写入1<2<1等效于写入0

b1payxdu

b1payxdu2#

由于<运算符的 * 结合性 *,表达式1 < 2 < 1(1 < 2) < 1相同。
所以你要检查1 < 2的布尔结果是否小于11 < 2的结果是true,它将被转换成整数值1false将变成0)。
换句话说,1 < 2 < 1被转换为1 < 1,即false

相关问题