执行如下 C++ 代码,其输出是( )。
cout << (bool(5) + bool(-5) + bool(5.0));这题考查 C++ 类型转换规则。核心思路是识别出 bool 构造函数会把任何非零值转为 true(1),零值转为 false(0),然后按运算符优先级求值。
A 错在以为 bool(5)+bool(-5)=0,忘了转换先发生;B 错在把+当成逻辑或,或认为整体为真;C 错在误判 bool(5.0) 为 false,或把 bool(-5) 当成 false。
本题考查 GESP C++ 二级大纲中"类型转换与表达式求值"模块。命题人放这道题,就是要卡住"条件转换(conditional conversion)"这个二级知识点——绝大多数考生知道 bool 转换,但容易在混合整数和浮点、正负数时出错。
看到题先识别出三个 bool 构造函数调用。关键观察:bool(5)→true(1),bool(-5)→true(1),bool(5.0)→true(1)。然后按运算符优先级:三个 bool 值都是 int 类型,执行整数加法 1+1+1=3。