GESP 一级 · GESP 202312 C++ 一级 第 20 题

判断题 · 答案 A

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

题目

if 语句中的条件表达式的结果可以为 int 类型。

答案:A

解题思维

这题考的是C++里if条件表达式类型的规则。别被'条件'二字带着走,只要表达式能求值,它的类型(int、char、double甚至自定义类型)都能直接当条件用,命题人就是拿这个反常识点挖坑。

常见错误

学生最容易错在惯性思维,觉得if后面必须要是bool类型,或者只盯着int能当条件就以为其他类型不行,忽略了char、float、double、数组下标、函数返回值等所有可求值表达式都能作条件。命题人特意强调'结果可以为int',其实是在打破'条件必须是布尔'的刻板印象,诱导你只关注整型而忽略其他类型同样合法,导致你误以为只有int能作条件而选错。

详细解析(节选)

本题考查的是C++中if语句条件表达式的类型规则,核心知识点是:任何可求值的表达式都可以作为if的条件,其类型不限于bool或int。

命题人为什么这么考?因为在很多初级语言(如Python)中条件必须是非零/非False的布尔值,而C++允许任何表达式参与条件判断。命题人故意用'结果可以为int'这种表述,就是想打破学生'条件必须是布尔'的惯性思维,同时暗示其他类型(如char、double)也能作条件,但只点出int,让你误以为只有int合法,从而掉进陷阱。

解题心法:拿到题先想'条件是什么?'——C++里if后面跟的是一个表达式,这个表达式会被求值,求值后的结果类型就是条件类型。只要表达式能求值,其结果类型无限制。因此int、char、float、double、数组下标、函数返回值等都能作条件。

具体到这道题,选项A说'正确',B说'错误'。正确答案显然是A。因为条件表达式的结果确实可以是int类型,比如一个算术表达式求值后得到整数,直接放if里完全合法。

避坑提醒:学生常混淆'条件类型'与'表达式类型',或者只盯着int能作条件就以为其他类型不行。命题人故意用'结果'二字,诱导你联想到布尔或整型两分,忽略了char等类型同样可作条件。只要表达式能求值,其结果类型无限制。

考频与趋势:从题库数据看,'基础语法'类题目在2023年考了287题、2024年413题、2025年401题,呈现逐年上升趋势,说明这类概念辨析题是高频考点。而'基本数据类型'和'运算符与表达式'分别考了63题、91题(2023年),也印证了类型相关知识点是重点。

预测:未来GESP一级会继续高频考察这类'反常识'的概念题,命题人可能会把条件表达式类型扩展到更隐蔽的场景(如自定义类型、指针运算结果等),但核心规则不变:任何可求值表达式的结果类型都能作条件。暂无足够依据预测具体新题型,但可预期难度会略有提升,仍属于基础语法范畴。

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