logo

比大小

入门。

程序中一般可以使用><来比较两个数的大小。而并不是每个语言都支持直接比较两个以上的数。比如 Python 中a > b > c就是可以的,它相当于a > b and b > c

>>> a, b, c = 3, 2, 1
>>> a > b > c
True

而 Java 中是不允许的:

jshell> int a = 3, b = 2, c = 1
a ==> 3
b ==> 2
c ==> 1

jshell> a > b > c
|  Error:
|  bad operand types for binary operator '>'
|    first type:  boolean
|    second type: int
|  a > b > c
|  ^-------^

放弃?

报错总比给出错误答案要好。C++给出的是就是 False

int a = 3, b = 2, c = 1;
cout << (a > b > c ? "True" : "False") << endl;
// => False

进阶!

显然 C++并不是像人类(还有 Python)一样思考的。它首先看3 > 2为真,但接下来还要比较,而true就是1false就是0,所以(3 > 2) > 1变成了1 > 1,自然为假。

程序不报错不代表没错。关键还是要理解代码背后,程序是如果工作的。