下面有关 C++ 变量的说法,正确的是( )。
答案A。结合C++语法规则和计算机基础知识判断。
注意区分C++语法规定的"必须"与编程习惯上的"应该"。
【考点】关键字与保留字|变量命名规范|标识符规则
1. 考纲定位:GESP 二级《C++ 语言基础》中“标识符与关键字”模块。命题人把“关键字、函数名、普通变量名”混在选项里,卡住的是对语言词法(lexicon)的模糊认知——很多考生会凭经验把 printf、for 都当成“不能用的词”,却分不清关键字和库函数名的本质区别。
2. 解题思维:逐条拆解:A 正确,因为 for 是 C++ 关键字,标识符不能与关键字冲突;B 错,_ 开头完全合法,C++ 规定标识符由字母、数字、下划线组成且首字符可为下划线;C 错,末尾下划线不违反语法,只是可读性差;D 错,printf 是标准库函数名而非关键字,变量名可以复用函数名(虽然不推荐)。核心通法是:先判断“是不是关键字”(查语言规范),再判断“是不是库函数名”(看头文件),最后看“命名规则”(首字符、字符集)。
3. 陷阱拆解:B 利用“首字符必须是字母”的直觉误区(其实下划线也合法);C 利用“末尾符号易混淆”的视觉陷阱(语法上完全允许);D 利用“printf 是关键字”的错误记忆(它只是函数名,可以 shadow 或重载)。这些陷阱都源于对 C++ 词法规范的不严谨记忆。
4. 反命题思维:如果把 D 改成“可以用 scanf 作为变量名,因为 scanf 是关键字”,答案就变成 D 正确;或者把 B 改成"1tnt 不可以是变量名,因为首字符必须是字母”,则 B 正确。这类变式题都在考“关键字 vs 函数名 vs 普通标识符”的区分。