首页 > 解决方案 > 条件运算符不匹配

问题描述

当我在 python 中执行以下代码时

print(0<5<2)

它给出 False 作为输出,但在 C++ 中是一样的

std::cout<<(0<5<2);

返回真

为什么会有这种矛盾?

标签: pythonc++conditional-statements

解决方案


在 Python 中,0 < 5 < 2等价于0 < 5 and 5 < 2.
在 C++ 中,它等价于static_cast<int>(0 < 5) < 2.

Python 速记最初是受到数学的启发,但已经被如此概括,以至于你可以写出非常奇怪的东西,比如

>>> 1 < 5 in [2,3,4]
False
>>> 1 < 5 in [2,3,5]
True

并迷惑你所有的朋友。


推荐阅读