下述语句的输出是:
cout << 1 + "20.24" << endl << 20.24;
A.
编译错误
B.
21.2420.24
C.
120.24 20.24
D.
0.24\n20.24
在 C++ 中,这行代码 cout << 1 + "20.24" << endl << 20.24;
尝试执行一个加法操作,在一个整数 (1
) 和一个字符串字面量 ("20.24"
) 之间。这种操作利用了 C++ 中的指针算术。
"20.24"
是一个字符串字面量,其类型为const char[6]
(包含了结尾的空字符'\0'
)。当用在加法表达式中,它会被转换为指向其第一个元素的指针。1 + "20.24"
实际上尝试将整数1
加到这个指针上,这意味着结果是指向"20.24"
的第一个字符之后的位置的指针。因此,它指向字符串"0.24"
。
因此,cout << 1 + "20.24"
实际上输出的是从 "20.24"
字符串的第二个字符开始的子字符串,即 "0.24"
。
然后 << endl
添加了一个新行,<< 20.24
输出了浮点数 20.24
。
所以,这行代码的输出将是:
0.24 20.24
答案是 D. 0.24\n20.24
。