C++ 表达式 010+100+001 的值为 111。
这题考的是C++整数字面量的进制规则,看到0开头别急着当十进制看,先转成八进制再算,别被视觉陷阱带偏。
学生最容易犯的错误是把010当成十进制的10,以为001是十进制的1,直接相加得111就选A了。其实0开头的数字在C++里默认是八进制,010八进制等于十进制8,001八进制还是1,加起来是109,根本不是111。
【考点】进制转换|整数常量表示|编译期求值
命题人卡住的是初学者对数字字面量的盲目信任——看到整数就默认十进制,忽略了C++标准中0前缀标识八进制的铁律。
解题时先识别字面量属性:010以0开头,按C++规则是八进制,即十进制8;100无前缀,是十进制100;001同样是八进制1。求和:8+100+1=109。109≠111,故为错误。
陷阱在于把010误读为十进制10,这是视觉陷阱;更隐蔽的是001也容易被看成十进制1,其实它是八进制1(十进制1),但010的八进制8(十进制8)与十进制10的差距才是关键。命题人利用的是对进制规则的模糊认知,以及将字面量与数值直接挂钩的思维惰性。
若把010改成10,表达式变为10+100+1=111,答案就反转为正确——这暴露了命题人刻意用进制差异制造"看似正确实则错误"的干扰项。刷到此类题时,先问自己:这个数有没有前缀?有没有隐含的进制?
从考频来看,"基础语法"在题库中总共考过1295题,覆盖11个考试级别(2008-2026);逐年分布:2008年1题、2011年1题、2019年3题、2023年287题、2024年413题、2025年401题、2026年109题、null年80题;分赛事:GESP一级332题、GESP二级283题、GESP三级215题、GESP四级186题、GESP七级91题、GESP八级79题、GESP六级78题、GESP五级23题、CSP提高级3题、CSP入门级3题、NOIP提高组初赛2题。其中仅"C++程序设计"就考过261题,覆盖5个考试级别(2009-2026);逐年分布:2009年1题、2023年61题、2024年103题、2025年72题、2026年13题、null年11题;分赛事:GESP三级82题、GESP一级78题、GESP二级60题、GESP四级40题、NOIP普及组初赛1题。
这类进制陷阱题在GESP一级、二级、三级中高频出现,尤其是2023-2025年基础语法类题目占比极大(287+413+401=1101题),说明命题组对基础概念辨析的考查力度持续加强。预测未来仍会延续这种"看似简单实则需严谨规则"的风格,可能会在更复杂的表达式或混合进制场景中考查,但核心仍是"0前缀=八进制"这一铁律。暂无足够依据预测具体题型变化,但掌握进制识别是应对此类题目的根本。