C++ 表达式 int(-123.123 / 10) 的值是( )。
别被小数位晃眼,这题核心就两步:先按浮点除法算出-12.3123,再用int()向零截断,负数向零就是去掉小数部分,直接得-12。
最容易栽跟头在C选项-13上,那是把向零截断当成向下取整(floor)了,负数floor会多减1;还有A选项-124,是误以为123.123除以10等于12.3123后再取整变成124(符号搞反或算错),其实除数10不会让结果变那么大;B选项-123则是完全忽略了除数10,把-123.123直接截断。记住int()对负数是向零,不是向下。
GESP二级常考“浮点运算+类型转换”的组合陷阱。命题人故意写123.123,让你一眼觉得“这数看着像整数除法”,其实它是个浮点字面量;再套个int(),考的就是你懂不懂C++一元转换的规则——向零截断,而不是向下取整或四舍五入。这类题在基础语法里占比不小,2023年基础语法考了287题,2024年413题,2025年401题,说明命题人年年都在盯着你这块基本功。
123.123 / 10 就是 12.3123(在double里更精确,但对我们做题来说这个值就够了)。-12.3123 还是浮点。int() 类型转换:C++里把浮点转成整型,规则是“向零截断”,正数直接丢尾,负数也是丢尾,不会像数学里的floor那样往更小的方向走。1. 先算括号里的除法:-123.123 / 10。 123.123 ÷ 10 = 12.3123,前面有个负号,所以是 -12.3123。 2. 对这个结果做 int() 转换。 向零截断:去掉小数部分 0.3123,剩下整数部分 -12。 3. 赋值给 int 变量,结果就是 -12。
123.123容易以为要按整数除法算,其实只要记住它是个浮点字面量,除法就是浮点除法。从题库数据看,C++相关题目在2023年考了61题,2024年103题,2025年72题,2026年13题,虽然2026年骤降,但整体趋势是2023-2025年持续高位,说明“浮点+类型转换”这类基础题仍是命题人重点。基础语法里,GESP二级考了283题,占比很高,印证了二级对这类知识点的重视。
基于近年考频,未来二级和一级仍大概率会出类似的“浮点运算+int/float转换”题,可能换数字或加一层括号,但核心规则不变。暂无足够依据预测是否会引入floor/ceil等函数混淆项,但向零截断这个考点应该还会反复考。