C语言中连续比较运算表达式的含义与执行逻辑是什么?
C语言表达式
1<2<1的含义与逻辑解析 C语言里关系运算符(比如<)是左结合的,也就是说多个同优先级的关系运算符会从左到右依次计算,不会像数学里那样理解成“中间值同时满足左右两个条件”。
以1<2<1为例,实际计算过程是:
- 先计算左侧的
1<2:这个比较结果为真,在C语言中布尔值真用整数1表示,假用0表示。 - 再用第一步的结果
1和右侧的1做比较,也就是计算1<1:这个比较结果为假,最终整个表达式的取值是0。
如果你想用C语言表达数学里“a < b < c”的逻辑(即b在a和c之间),不能直接写连续的关系运算符,必须用逻辑与&&拆分:
// 正确表达x在1和3之间的方式 1 < x && x < 3
再举几个类似例子方便理解:
3<5<2:先算3<5得1,再算1<2得1,最终结果为12<1<3:先算2<1得0,再算0<3得1,最终结果为15<3<1:先算5<3得0,再算0<1得1,最终结果为1
内容的提问来源于stack exchange,提问作者vanguy
相关产品推荐
相关产品推荐

