int var;
var=' '; // this is a single space
cout << var; // prints 32
var = ' '; // double space
cout << var; // prints 8224. Why?
编译器如何计算两个空格(8224)?
每个多字符文字都会出现这种情况。
答案 0 :(得分:0)
这就是C ++标准N3690提到的关于多字符文字的内容:
包含多个c-char的普通字符文字是多字符字面值。包含单个c-char的多字符文字或普通字符文字,在执行字符中无法表示 set,有条件支持,类型为int,并且具有实现 - 定义的值。
所以答案是相应的int值是特定于实现的。
对于单字面文字:
包含执行字符集中可表示的单个c-char的普通字符文字具有char类型,其值等于执行字符集中c-char编码的数值。
答案 1 :(得分:0)
c ++中的char是字节(可能的int值从 0 到 255 )。 所以在你的情况下你投下两个白色空间&#39; &#39;在幕后,它只是 base-256转换。更确切地说:
修改强>
第2步依赖于实现,如@ saurav-sahu所提到的,例如:如果是big endian or little endian。
我试图让你对系统背后的内容有所了解,但正如pete_becker正确指出的那样,它是高度针对具体实施的,例如: char类型可以解释为有符号或无符号值,依此类推。