在 C++ 代码中,虽然变量都有数据类型,但同一个变量也可以先后用不同类型的值赋值。( )
这题考的是C++变量声明与赋值规则。核心在于分清‘变量类型’和‘赋值值的类型’:变量类型一旦定义就锁死,但赋值时允许隐式转换,所以先后放不同类型值完全合法。
学生最容易把‘类型固定’四个字死记硬背,看到‘不同类型的值’就条件反射选错。其实命题人就是利用这种刻板印象,把‘值’偷换成‘类型’来挖坑。另外,有些同学会纠结‘会不会报错’,其实C++对int和float/double的隐式转换是标准允许的,不会报错,只会截断或补零,这也是考点之一。
【考点】变量定义与赋值规则|隐式类型转换
命题人专挑‘变量类型固定’这一初学者易混淆点设题——90%考生看到‘同一个变量’就下意识认为类型不能变,完全忽略C++允许隐式类型转换的机制。
拿到题先拆关键词:‘同一个变量’锁定作用域内唯一标识;‘不同类型的值’指赋值表达式类型差异而非变量类型改变。C++中变量类型由声明确定不可修改,但赋值时允许隐式转换:int变量可接受float/double表达式(截断小数),double变量可接受int表达式(补零)。因此先后赋值不同原始类型值完全合法,选A。
这一类题通法:遇到‘变量+类型’组合,立刻反应‘声明时类型固定,运行时赋值可转换’,先确认是否涉及隐式转换场景。
错误选项B是典型‘字面意思陷阱’——命题人利用学生死记‘变量类型不变’的片面结论,故意用‘不同类型的值’偷换概念,把‘变量类型’伪装成‘赋值类型’。最阴险的绝对化表述是‘类型固定’,学生若只背结论不理解隐式转换,就会掉进这个坑。
若把‘不同类型的值’改成‘同类型的值’,答案不变仍选A;若改成‘同一个变量可以改变类型’,答案就变B了。刷到类似题时先问自己:‘考的是声明时的类型约束,还是赋值时的类型转换?’
【考频趋势】变量与常量在题库共考77题,其中GESP二级占15题,2023年达30题,近年呈下降趋势(2024年26题、2025年11题),说明该考点已从高频转向中频,但仍是基础必考项。基本数据类型考频更高(267题),GESP二级48题,2026年达119题,显示命题人更倾向在‘类型转换’‘类型匹配’等细节上设坑,而非单纯考‘类型固定’。
预测:未来GESP二级会继续考变量赋值规则,但更可能结合‘隐式转换’‘类型提升’等细节,如‘int和float混合运算结果类型’‘自动类型转换是否丢失精度’等,单纯判断‘能否赋值’的题目会减少,转而考‘赋值后值是否正确’。暂无足够依据预测具体年份题量变化,但建议重点复习隐式转换规则。