多条件if语句简化写法咨询:能否用3 < n <20替代逻辑与?
关于链式多条件判断的问题解答
嘿,这个想法其实挺贴合直觉的——毕竟数学里我们就是这么写范围判断的,但很遗憾,在C/C++这类基于C语法的语言里,3 < n < 20这种写法是无法实现你想要的逻辑的,我来给你掰扯清楚原因:
在这类语言中,表达式是从左到右依次求值的:
- 首先计算
3 < n,这个比较会返回一个布尔值(true对应1,false对应0) - 接着用这个布尔值和20比较,也就是变成
1 < 20或者0 < 20,这两个结果永远都是true - 最终你的
if条件会一直成立,完全达不到判断n在3到20之间的目的
那正确的写法就是你提到的标准方式:
int n = 3; if (n > 3 && n < 20) { // do something.. }
这是C系语言里通用的多范围判断写法,虽然看起来不如数学表达式简洁,但逻辑清晰,编译器能准确解析你的需求。
补充一句:有些编程语言(比如Python)确实支持3 < n < 20这种链式比较语法,但C/C++、Java这类语言并不支持,所以只能使用逻辑与运算符&&来组合条件。
内容的提问来源于stack exchange,提问作者Malling
相关产品推荐
相关产品推荐

