前些天同学问了我一道题,大致是这样
int main()
{
int a=5,b=4,c=3,d=2;
if(a>b>c)
cout<<d;
else if((c-1>=d)==1)
cout<<d+1;
else
cout<<d+2;
return 0;
}
一开始我甚至都没有意识到哪里出了错,然后才发现这里刚好有着比较运算符很重要的两个点。
1. 比较运算符的结果都是Bollean型,也就是只会在“真”、“假”里选一者。
就像这里((c-1>=d)==1),由于 — 的优先级高于 >=,c–1>=d 为真,因此值为1。
2. 第一个if判断中,用到了连等。但判断中是不允许用到连等的,只能写为 a>b&&b>c 。这样这道题的结果也就很容易得出了,输出的结果为3。
这两个点都是作者做为初学者认为比较容易出错的点,希望会有些帮助😀