GESP 二级 · GESP 202309 C++ 二级 第 21 题

判断题 · 答案 B

← 整套速查表 GESP 二级 全部真题

题目

如果 a 为 int 类型的变量,则表达式 (a >= 5 && a <= 10) 与 (5 <= a <= 10) 的值总是相同的。

答案:B

解题思维

答案选B。别被Python的链式写法带偏,C++里关系运算符不支持连写,要先算左边结果再和右边比,中间还会发生隐式类型转换,这才是坑。

常见错误

最容易错就是以为5<=a<=10在C++里能像Python那样直接判断范围。其实C++严格遵循运算符优先级和结合性,两个<=优先级相同且左结合,会先算5<=a得到一个布尔值,再把那个布尔值去和10比。因为bool转int时true变1,所以只要5<=a成立,1<=10恒为真;若5<=a不成立,0<=10也恒为真。结果这个表达式永远为真,完全不等价于原题。

详细解析(节选)

【考点】C++语言语法|运算符优先级|逻辑与表达式

1. 考纲定位

本题考查C++二级"运算符优先级"考点,命题人专门卡住"以为C++支持链式比较"的初学者,因为5<=a<=10在C++里根本不是语法糖,而是先算5<=a再跟10比。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断