概括一下,为什么不2 < x < 9等于2 < x && x < 9?
这是我编写的测试代码:
#include <iostream>
int main()
{
int nums[] = { 5 , 1, 10};
// We are gonna check if the number is in the range 2 - 9
for (auto e : nums)
{
if (2 < e < 9)
std::cout << "2 < " << e << " < 9" << std::endl;
if(2 < e && e < 9)
std::cout << "2 < " << e << " and " << e << " < 9" << std::endl;
}
std::cin.get();
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
2 < 5 < 9
2 < 5 and 5 < 9
2 < 1 < 9
2 < 10 < 9
Run Code Online (Sandbox Code Playgroud)
看来只能2 < e && e < 9正常工作。
Bat*_*eba 36
表达方式
2 < x < 9
Run Code Online (Sandbox Code Playgroud)
分组为
(2 < x) < 9
Run Code Online (Sandbox Code Playgroud)
而且由于2 < x是false(0)或true(1),并且都小于9,因此始终为true。
所以,除非你使用重载运营商的非内置型x(当时3路比较会如果有可能2 < x是返回一个实例代理上对象<的定义),如果你想测试,如果x是在区间(2,9)您需要按照自己的方式编写。
Lig*_*ica 20
只是因为该语言没有该功能。
可以做到这一点,但这将以不兼容的方式与C形成对比。
本可以使用C语言,但设计人员根本没有这样做。
您已经有正确的方法。
一些不同的(和更新的!)语言确实支持这一点。
| 归档时间: |
|
| 查看次数: |
1888 次 |
| 最近记录: |