if else if时遇到的问题
在写if条件句的条件时
比如:
为什么不能直接写成 1 <= n < 5
而要写成 1 <= n && n < 5
怎么解释这个问题?
[解决办法]
就是这样规定的,不支持这种1<a<b这种格式,这种格式被解释为(1<a)<b不是你想要的结构
[解决办法]
解释为 标准规定。
最开始的时候,实现 连续比较的格式不方便 。
如
a<b ,这个表达式的返回值是? 是bool ,那么是 0 或者 1.
如果要连续比较的话 a<b<c 怎么解释呢?
[解决办法]
解释很简单:写成那种形式会给表达式处理带来困难。
C对这类表达式的处理方式是对各个同级双目运算符按序进行求值,并将所得值用于下一步的处理。而你所写的那种形式在按序求值时会导致错误结果。要解决这个问题就得要放弃按序求值的方法,使得语法复杂化,造成更多麻烦。
另一方面,C的各种语法都很注重与机器本身解决方法的一致性。这种一致性带来了C代码的高效运行,是C安身立命之本。而机器里的条件判断没有3元的,只有单元和二元的。所以,C不能支持这样的语法。
最后,既然你才学了这么点,就别先问为什么了。你首先该问的是怎么做。了解得太少,别人解释越多你会感到越糊涂。