为什么在C语言中-5<-2<-1不等式表达式返回0而非预期的1(真)?
C语言中
-5<-2<-1返回0的原因 核心原因是C语言的运算符优先级和结合性规则:
- 小于号
<是左结合的运算符,所以表达式会从左到右依次求值,而非你预期的数学上的连续比较逻辑。 - 第一步先计算
-5 < -2,这个表达式的结果为逻辑真,在C语言中会用整数值1表示。 - 第二步把第一步的结果代入后续运算,变成计算
1 < -1,这个表达式的结果为逻辑假,对应整数值0,所以最终输出就是0。
如果要实现数学上「-5小于-2,且-2小于-1」的判断逻辑,需要写成逻辑与连接的形式:
printf("%d", -5 < -2 && -2 < -1);
此时输出就是你预期的1。
内容的提问来源于stack exchange,提问作者Sofia Lazrak
相关产品推荐
相关产品推荐

