【发布时间】:2015-07-08 00:04:45
【问题描述】:
在 Stroustrup 的编程中的第 3.9.1 章“安全转换”中,他有代码来说明从 int 到 char 并返回的安全转换。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
char c='x';
int i1=c;
int i2='x';
char c2 = i1;
cout << c <<'<< i1 << ' << c2 << '\n';
return 0;
}
它应该在屏幕上打印x 120 x。
但是,我无法让它工作,我不知道为什么。我得到的结果是x1764834364x。
我还收到 3 个警告(在 Xcode 6.3.1 中)。
- 多字符字符常量。
- 字符常量对于它的类型来说太长了。
- 未使用的变量 i2。
是什么原因造成的?
【问题讨论】:
-
您确定您复制的代码正确吗?正如消息所说,在
'<< i1 << '周围使用单引号是一个多字符字符常量,这几乎不是您想要的。也许您希望cout << c << ' ' << i1 << ' ' << c2 << '\n';在您要打印的内容之间添加空格。 -
我完全按照书中的内容复制了它,但你是对的 Greg。如果我按照你的建议去做,我会得到想要的答案。我很失望书中的示例没有更精确,但我感谢您的帮助。
-
嗯,你说得很对。我看了page 79 in Google Books,果然,书中的代码肯定是不正确的。
标签: c++