GESP 一级 · GESP 202309 C++ 一级 第 3 题

选择题 · 答案 B

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

题目

C++ 表达式 2 - 1 && 2 % 10 的值是( )。

答案:B

解题思维

这题考的是运算符优先级和布尔值转换。拿到题先别急着算,脑子里过一遍优先级表:算术运算(减号、取模)优先级高于逻辑运算(&&)。所以表达式实际是(2-1)与(2%10)做逻辑与。

常见错误

最容易掉进的坑有两个:一是把非零整数2误当成假值(false)去算,导致结果算成0;二是完全无视优先级,把&&当加法或者把1&&2当成1&&0来算。还有人会纠结取模2%10到底等于多少,其实新手陷阱就在于这里,2%10就是2,别慌。

详细解析(节选)

考点定位

GESP C++一级大纲第5章“运算符与表达式”,核心就是运算优先级和逻辑运算符的求值规则。命题人放这道题,目的很明确:卡住那些只背语法、不懂优先级顺序的考生——绝大多数人看到&&就以为它是最高优先级,或者看到非零数就下意识当成假值处理。

解题思维

拿到题先想:C++里二元运算符的优先级表里,算术运算符(-、%)都在逻辑运算符(&&)前面。所以表达式实际分组是(2 - 1) && (2 % 10),而不是2 - (1 && 2) % 10。

然后算:2 - 1 = 1,2 % 10 = 2,得到1 && 2。

最后转换:C++约定非零值视为true(即1),零视为false(即0)。1 && 2两个操作数都非零,逻辑与结果为true,输出为1,选B。

通法:遇到混合运算符,先画括号按优先级分组,再逐段计算,最后注意布尔与整型的隐式转换规则。

陷阱拆解

反命题思维

命题人若把&&换成||,结果变成1 || 2 = 1;若把%换成/,2 / 10 = 0,则1 && 0 = 0(选A)。刷到类似题先问自己:“这里有没有把高优先级的算术运算符误当成逻辑运算符?有没有把非零值当成假值?”这两点踩中,基本就掉进坑里了。

考频趋势

从题库数据看,本知识点属于“基础语法”大类,整体考频极高:1295题,覆盖11个级别,2023年287题、2024年413题、2025年401题,近三年几乎每年都在考。在GESP一级中更是重灾区,共332题,远超二级(283题)和三级(215题)。这说明命题人非常看重学生对基本运算符优先级的掌握,尤其是混合表达式这种“看似简单实则易错”的类型。

预测

基于数据,未来GESP一级和二级继续高频考查混合运算符的优先级判断几乎是板上钉钉。虽然暂无足够依据预测具体题目形式(比如会不会引入更多嵌套或位运算),但可以肯定的是,只要学生能把“先算算术、再算逻辑、非零即真”这条铁律刻在脑子里,这类题就不会丢分。

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