C++ 的字符变量的码值是整数,下面字面量形式的字符码值最大的是( )。
这题核心在识别数字字面量前缀代表的进制。拿到题别急着比大小,先圈出每个选项前面的符号:纯数字是十进制,0开头是八进制,0x开头是十六进制。识别清楚后转成十进制再比,C项0x70最大。
最容易栽跟头的就是B项075,很多人看到75直接当七十五算,完全忽略了前面的0意味着这是八进制,实际值是61。其次是C项0x70,有人会漏掉x,把十六进制当成十进制70,或者误以为0x是变量名导致计算错误。还有A项100,虽然数值最大,但命题人故意放个纯数字来测试你是否真的在比‘字符码值’还是单纯比整数大小,容易让人掉以轻心。
这道题考查的是C++中数字字面量的进制识别与字符常量值比较。命题人非常擅长利用字面量的前缀符号(0、0x)制造陷阱,特别是八进制的0前缀,它不像十进制那样直观,极易被忽略,导致计算结果偏差巨大。
在C++里,字符变量存的是ASCII码值(整数)。数字字面量怎么写,就按什么进制算:
100 就是十进制 100。0,比如 075,就是八进制,要按 8 的倍数算。0x,比如 0x70,就是十六进制,按 16 的倍数算。100:纯数字,十进制,值就是 100。075:前面有个0,是八进制。计算:7×8 + 5 = 56 + 5 = 61。0x70:十六进制。计算:7×16 + 0 = 112 + 0 = 112。0x60:十六进制。计算:6×16 + 0 = 96 + 0 = 96。075 直接当成七十五,忘了八进制里7代表的是56,结果算成75,比实际大了14,直接丢分。0x70 不是 70,也不是 0x70=70(十进制),而是 112。命题人故意用0x开头,就是看你是否能一眼识别十六进制。从题库数据看,“变量与常量”模块共考过77题,覆盖GESP一级到CSP入门级,其中GESP三级考了8题,说明该级别对基础字面量识别要求不低。“基本数据类型”模块考得更频,267题,且2026年高达119题,显示近年对类型和字面量考查力度在加大。GESP三级在基本数据类型中占了38题,占比约14%,属于高频考点。
基于2026年基本数据类型考题激增(119题)的趋势,以及GESP三级近年持续稳定出题(8题),未来GESP三级仍会高频考查字面量进制识别,尤其是八进制和十六进制的陷阱题。命题人可能会继续用类似075、0x60这种写法,或者把前缀和字符常量混在一起(如'0x70')来增加难度。暂无足够依据预测具体年份的考题形式,但“前缀识别→进制转换→比大小”这一套路大概率会延续。