有关如下 C++ 代码的说法,正确的是( )。
float a = 3 + 3.5;
cout << a;答案D。cout用于输出到标准输出(通常是屏幕)。cin从标准输入读取。
cout和cin在iostream头文件中定义,使用时需#include <iostream>。
【考点】浮点运算|类型转换|表达式求值顺序
1. 考纲定位:GESP 一级 C++ 考查"混合类型运算与浮点常量解析"。命题人特意埋下陷阱:3 + 3.5 中 3.5 是浮点字面量,编译器会按 double 处理,整数 3 先提升为 double,加法结果为 6.5,不会报错。这是绝大多数初学者误以为"整数参与运算会变成整数"的典型盲区。
2. 解题思维:看到表达式先判断操作数类型。3 是 int,3.5 是 double,C++ 规则是"任何含浮点量的算术运算都按浮点处理",所以 a = 3 + 3.5 合法且输出 6.5。若改成 3 + 3 + 1/2,1/2 是整数除法得 0,结果变成 6;改成 3.0 + 3.5 只是显式写浮点,效果相同。
3. 陷阱拆解:A 错在"代码将报错"——C++ 允许混合类型运算,不会因类型不同而报错。B 的"报错"同样错误,3.0 + 3.5 是合法的浮点加法。C 错在认为输出是整数 6,忽略了浮点常量导致运算结果带小数。最阴险的是 D 的反面——若题目把 3.5 写成 1/2,很多考生会误以为等于 0.5,实则整数除法得 0,这就是命题人想让你识别的"字面量类型决定运算规则"的本质。
4. 反命题思维:如果把 3.5 改成 1/2,答案会变成 6;若改成 3.0 + 1/2,答案仍是 6,因为整数除法先执行。刷到类似题,先问自己"这个字面量是 int 还是 float/double?"再决定运算规则。