比大小

Updated: 2019-01-06

入门

程序中一般可以使用><来比较两个数的大小。而并不是每个语言都支持直接比较两个以上的数。比如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,自然为假。

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