C++ 的变量 X 是 double 型,则表达式 X = 27 % 12 的结果不可预测。
看到题先想运算符优先级。X = 27 % 12 中,% 的优先级高于赋值,所以先算 27 % 12。两个整数取模结果仍是整数 3,再赋值给 double 变量 X 时发生隐式类型转换,得到 3.0。整个过程完全确定,不存在"不可预测"。
选项 A 的陷阱在于混淆了"变量类型"与"表达式类型"。命题人故意把 double 变量放在等号左边,诱导考生认为只要涉及浮点型就可能出现未定义行为。实际上,取模运算只作用于操作数,与目标变量类型无关。
本题考查《GESP 考试大纲》一级"运算符与表达式"模块中的取模运算与类型转换规则。命题人专门卡住"看到 double 变量就以为表达式可能未定义"的直觉误区,因为一级考生最容易把变量类型和表达式类型混为一谈。
看到题先想运算符优先级。X = 27 % 12 中,% 的优先级高于赋值,所以先算 27 % 12。两个整数取模结果仍是整数 3,再赋值给 double 变量 X 时发生隐式类型转换,得到 3.0。整个过程完全确定,不存在"不可预测"。