为什么用cout输出含两个空格的char字面量会得到整数值8224?
问题原因
你出现这个问题是因为混淆了C++中单引号和双引号的用法:
- C++里单引号
'只能用来包裹单个char类型字符,如果你用单引号包裹了两个空格,属于多字节字符常量,它的默认类型是int而非char,具体取值由编译器实现和系统字节序决定。 - 空格的ASCII编码为十进制32,对应十六进制
0x20,在绝大多数通用的小端序平台上,两个空格组成的多字节字符常量的取值为0x2020,转换为十进制恰好就是你看到的输出值8224。
正确实现方式
如果你需要输出两个空格,改用双引号"包裹字符串即可:
cout << " " << endl;
也可以分开输出两个单空格字符:
cout << ' ' << ' ' << endl;
内容的提问来源于stack exchange,提问作者KMING
相关产品推荐
相关产品推荐

