GESP 三级 · GESP 202509 C++ 三级 第 16 题

判断题 · 答案 B

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

题目

表达式 sizeof('a') 的结果总是 $1$,因为 'a' 是一个字符。

答案:B

解题思维

答案B。0xf是十六进制15(int),015是八进制13(int),两者不相等,表达式值为false。

常见错误

表达式结果类型由最高精度的操作数决定。double参与运算后整个表达式提升为double。

详细解析(节选)

【考点】C++ 语言特性|整数提升|sizeof 运算符

考纲定位: 本题考查的是 C++ 标准中关于整数提升(integer promotion)的规则。命题人专门在这道题卡住绝大多数 C++ 初学者——他们看到 'a' 就以为它永远占 1 字节,却忽略了 sizeof 作用于的是类型而非字面值。

解题思维: 看到 'a' 先定类型是 char,但 sizeof 触发整数提升规则,char 会被提升为 int 参与运算,sizeof 返回的是提升后的类型 int 的大小,在主流编译器上 int 占 4 字节。

陷阱拆解: 选项 A 错在把字符常量的字面值大小(1 字节)和 sizeof 的返回值混为一谈。sizeof 是操作符,不是取值操作,它操作的是类型而非常量本身。更阴险的是,命题人用「总是 1」这种绝对化表述,只要考生明白 char 会被提升为 int,就能直接否决。

反命题思维: 若把 'a' 改成 'a' + 1,sizeof 结果还是 4 吗?是,因为结果仍是 int 类型。刷到类似题,先问自己:sizeof 到底看的是字面含义还是类型?

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