GESP 一级 · GESP 202403 C++ 一级 第 11 题

选择题 · 答案 D

← 整套速查表 GESP 一级 全部真题

题目

下面关于整型变量 int x 的赋值语句不正确的是( )。

答案:D

解题思维

这题考的是C++里浮点转整数的语法细节。拿到题别急着背规则,先盯着等号右边看:A和B是合法的隐式转换,C是合法的函数式转换,D直接把类型名当运算符用,语法上根本站不住脚,一眼就能排除。

常见错误

很多学生一看到浮点变整数就只记‘小数部分直接扔掉’这个结论,结果把D选项误当成‘简写写法’选了。其实C++里类型转换必须走函数(如int())或强制类型运算符(如(int)),绝不能把类型名裸裸地放在等号后面。命题人就是利用这种‘只记结论不记语法’的惯性,把D设计成最像‘直观写法’的陷阱,专门坑那些没亲手写过转换语句的考生。

详细解析(节选)

【考点】类型转换语法|赋值语句结构|隐式与显式转换

【命题视角】这道题放在GESP一级,命题人显然是想考‘语法形式’而非‘数值规则’。绝大多数考生背过‘浮点转整数会截断’,但很少真正写过转换语句,一见到带括号的int(3.16)就犹豫,一见到D选项这种‘看起来像简写’的写法就以为正确。命题人利用的就是这种‘只记结论、不记语法’的惯性。

【解题心法】拿到题先别想数值结果,直接看等号右边的结构: 1. A选项x=(3.16):括号不改变值,3.16是浮点字面量,赋值给int会触发隐式转换(截断小数),语法完全合法。 2. B选项x=3.16:省略括号,同样是隐式转换,合法。 3. C选项x=int(3.16):把int当函数调用,这是C++里合法的显式转换写法,合法。 4. D选项x=3.16 int:等号后面直接跟了一个类型名,没有任何转换函数、运算符或括号,这在C++里根本不是一个合法的表达式,编译器会报语法错误。

因此只有D是不正确的。

【避坑提醒】最容易掉进的坑就是认为D是‘简写’或‘直观写法’。记住:C++里类型转换必须通过函数(如int())或强制类型运算符(如(int))来实现,绝不能把类型名裸裸地放在等号后面。命题人特意把D设计成‘看起来像正确’的选项,就是为了坑住那些只背结论不写代码的学生。

【考频与趋势】‘类型转换与赋值’这一知识点在题库中历年考频极高:2023年287题、2024年413题、2025年401题、2026年109题,四年合计超过1200题,是GESP一级的高频考点。从分赛事看,GESP一级占了332题,远超其他级别,说明命题人特别偏爱在入门级考查语法细节。

【预测】基于近年数据,GESP一级继续以‘语法陷阱’为主轴,未来很可能会延续这种‘看似合理实则错误’的选项设计,比如把类型转换写成x=3.16 int或x=3.16(int)等变体。只要考生真正动手写过转换语句,就能一眼识破。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断