Bha*_*rya 0 c++ expression-evaluation
int n = 5;
if(2<=n<=20)
{
cout << "hello";
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,它没有给出错误,它成功运行并且给出“ hello”作为输出。
但是我们必须使用&&这种方程式。
谁能解释一下?
Rei*_*ica 12
<=在C ++中为左关联,因此将表达式解析为((2 <= n) <= 20)。2 <= n类型为bool,可以隐式转换为int:true转换为,1然后false转换为0。
这两个都是<= 20,因此条件始终有效。
注意,以上假设n是一个int或另一个原始数值类型。如果n是具有operator <=重载的用户定义类,则关联性位仍然为true,但是基于该重载运算符的返回类型和语义,有关隐式转换的部分可能适用也可能不适用。
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |