GESP 一级 · GESP 202512 C++ 一级 第 24 题

判断题 · 答案 B

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

题目

如果 $x$ 是 C++ 代码中的 double 型变量,则对 cout << (x? 1227 : 12.27); 编译时将报错,因为 $1227$ 和 $12.12$ 分别是 int 和 double 类型,导致识别混乱。( )

答案:B

解题思维

答案B。根据C++语法规则分析各选项。注意赋值、运算、类型等细节。

常见错误

仔细审题,注意每个选项的语法细节。区分合法写法与错误写法。

详细解析(节选)

【考点】C++基本语法|类型转换|三元运算符

🎯 考纲定位:考查 C++ 基础语法中三元运算符的类型规则,卡住考生对隐式类型转换的盲区。命题人特意用 int 和 double 这对经典组合,诱导考生误以为类型不匹配就必报错。

🧠 解题思维:看到三元运算符先检查两分支类型是否"可兼容"。int 与 double 完全可兼容——编译器会自动把 int 转为 double,因此表达式整体类型为 double,输出合法。核心原则:C++ 允许隐式转换到"更宽"类型(int→double),但禁止双向互转(double→int 会截断)。

🪤 陷阱拆解:A 选项错在把"类型不同"等同于"编译错误"。实际上只要存在一条隐式转换路径即可。题目阴险处在于 1227 和 12.27 数值相近却类型不同,容易让人误以为"类型混乱",其实编译器只看类型兼容性而非数值。若两分支类型完全不可兼容(如 int 与 char*),编译器才会报错;但 int 与 double 始终兼容。

🔄 反命题思维:如果把 1227 换成指针或引用,或改成 1227 和 12.27 分别带 const,类型规则会怎样?这类变式会考察 const 传播、指针算术等更深规则。刷到类似题先反问:"两分支类型能否隐式转换?"

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