为什么 (0 < 5 < 2) 在C++中结果为真?[复制]

Why does (0 < 5 < 2) result true in C++? [duplicate]

提问人:No Username is Best Username 提问时间:2/24/2021 最后编辑:Ted LyngmoNo Username is Best Username 更新时间:2/24/2021 访问量:105

问:

以下代码输出到控制台 (true),即使从数学上讲也是 false。这背后的逻辑是什么?std::cout << (0 < 5 < 2);15 < 2

假设:这是因为计算为 1,因此计算为 。我说得对吗?0 < 50 < 5 < 21 < 2

c++ 数学 逻辑

评论

3赞 HolyBlackCat 2/24/2021
是的,你是对的。
1赞 Beshambher Chaukhwan 2/24/2021
正确。它从左到右进行评估。使用括号进行单独评估
0赞 Nathan Pierson 2/24/2021
我不知道算作整数提升,这可能是通常算术转换的一部分。基元是否算作 _Bool 类型的位域?boolintbool
0赞 Caleth 2/24/2021
0 < 5计算结果为 ,也是如此。 写“1”,除非标志被设置为truetrue < 2std::cout << truestd::ios_base::boolalphastd::cout

答:

0赞 Abhishek Dutt 2/24/2021 #1

你自己回答了这个问题,你是 100% 正确的。评估是根据优先级进行的。可能会对您有所帮助:-C++ 运算符优先级

评论

4赞 user4581301 2/24/2021
在关系的情况下,优先级和 ORDER。