GESP 四级 · GESP 202312 C++ 四级 第 21 题

判断题 · 答案 A

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

题目

执行 C++ 代码 cout<<(5||2); 后将输出 1 。( )

答案:A

解题思维

别急着算5加2,这道题考的是C++逻辑运算符的短路求值规则:遇到||(或运算),只要左边是‘真’,右边根本不用看,直接输出1。

常见错误

很多学生会把5||2当成数学加法,算出7,或者误以为逻辑值输出是0。其实cout输出bool时,true就是1,false就是0。命题人故意把5和2都写成非零数,就是想看你懂不懂‘左真右跳过’——左边5非零即真,右边2直接忽略,所以结果是1。

详细解析(节选)

1. 考点与概念:短路求值是什么?

在C++里,逻辑运算符||(或)和&&(与)有个很实用的特性叫“短路求值”(short-circuit evaluation)。规则很简单:

为什么会有这个机制?因为很多时候右边是个函数调用、数组下标或者复杂表达式,如果左边已经决定了结果,省掉右边既高效又安全(避免不必要的副作用)。

2. 命题人怎么挖坑?

这道题只给了一行代码:cout<<(5||2); 看起来平平无奇,但命题人盯的就是两个点: 1. 类型转换:C++把非零整数当作“真”,0当作“假”。5和2都是非零,所以它们分别代表true和true。 2. 短路行为:既然左边已经是true,||运算符根本不会去计算右边的2,直接返回true。 很多刚入门的同学会下意识想“5加2等于7”,或者担心“逻辑值输出是0”,这都是被表面数字迷惑了。命题人把两个非零数放在一起,就是想看你有没有真正理解短路规则,而不是死记“||就是或”。

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