在 C++ 语言中,标识符的命名不能完全由数字组成,至少有一个字母就可以。
这题考C++标识符命名规则。拿到题先别急着背结论,脑子里过一遍C++标准:标识符由字母、数字、下划线组成,且首字符必须是字母或下划线。题干说'不能完全由数字组成',这明显是偷换概念,因为纯数字串压根就不是标识符,连变量名都算不上。
学生最容易掉进'语义偷换'的坑。看到'数字'就想到0x321这种十六进制数,觉得它像变量名;或者被'至少一个字母'这种绝对化表述带偏,误以为C++允许纯数字标识符。其实纯数字串既不是变量名也不是函数名,它们根本不是合法标识符。命题人就是用这种'看似合理实则荒谬'的表述来测试你是否真正理解定义,而不是死记硬背。
【考点】标识符命名规则|C++语言标准
本题考查GESP一级《C++语法基础》模块中的标识符规则。命题人卡住的是考生对'标识符'概念的模糊认识——很多人以为'变量名'和'标识符'是一回事,其实C++里函数名、类名、全局变量名都算标识符,但数字不能作为标识符开头或唯一成分。
看到题先想'标识符'定义——C++标准规定标识符由字母、数字和下划线组成,且首字符必须是字母或下划线。关键观察:全数字串如12345既不是变量名也不是函数名,它们根本不是合法标识符,因此'至少一个字母'是多余条件;正确表述应为'不能全为数字且首字符须为字母/下划线'。
选项A利用'至少一个字母'的绝对化表述,让考生误以为C++允许纯数字标识符(如123),其实纯数字连变量名都不是。命题人挖的坑是'语义偷换'——把'标识符'偷换成'变量名',把'不能全数字'偷换成'至少一个字母'。如果你只背结论、不理解本质,就会掉进这个陷阱。
若把题干改为'标识符必须以字母开头,后续字符可以是数字或下划线',答案就会变成A;若改成'全局变量名必须是标识符',答案也是A。刷到类似题时,先问自己'命题人想考我什么'——是考定义还是考边界?
【考频趋势】在基础语法题库(1295题)中,标识符规则属于高频考点。从逐年分布看,2023年考了287题,2024年413题,2025年401题,呈现持续高位态势;而在GESP一级分赛中,标识符相关题目占比明显高于其他级别,说明一级考生对基础概念辨析要求更严。变量与常量模块(77题)中,GESP一级独占40题,占比超过一半,进一步印证命题人喜欢在一级阶段用纯概念题拉开差距。
【预测】基于数据,未来GESP一级会继续加大概念辨析题比重,可能引入更隐蔽的'语义偷换'陷阱(如把'标识符'换成'数组下标'、'指针变量'等相似概念)。暂无足够依据预测具体年份或题型变化,但建议考生务必厘清'标识符'与'变量名'的包含关系,避免被题干文字游戏误导。