表达式 sizeof('a') 的结果总是 $1$,因为 'a' 是一个字符。
答案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 到底看的是字面含义还是类型?