GESP 一级 · GESP 202303 C++ 一级 第 21 题

判断题 · 答案 B

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

题目

if 语句中的条件表达式的结果必须为 bool 类型。

答案:B

解题思维

这题考的是C++里if条件能不能用非bool类型。别被'必须为bool'这句话骗了,C++允许整数、指针、字符等非零值直接当条件用,命题人就是拿这个规则挖坑。

常见错误

很多同学死记'if条件要是bool',看到整数或非零值就以为报错。其实C++规定只要表达式能隐式转bool就行,非零整型、非空指针、非零字符都是合法的。这道题答案选B,因为原命题说'必须为bool'太绝对,忽略了这些常见用法。

详细解析(节选)

【考点】if语句条件表达式的类型要求|隐式类型转换规则|GESP一级语法基础

命题人怎么挖坑

GESP一级大纲里,if语句的条件表达式确实要求是bool类型,但C++标准允许任何能隐式转换为bool的值作为条件。命题人故意把'可隐式转bool'偷换成'必须为bool类型',就是想测试你是不是真的理解C++的类型转换规则,还是只背了结论。这类题在GESP一级和二级里很常见,专盯初学者对'非零即真'规则的陌生。常见的反例包括:if(x)中x是int或char、if(!x)逻辑非表达式、if(x>0)关系表达式,这些都不是bool但完全合法。

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