C++ VS2013字符文字不';不能像MSDN和x27那样工作;s规格

C++ VS2013字符文字不';不能像MSDN和x27那样工作;s规格,c++,visual-studio-2013,character,literals,C++,Visual Studio 2013,Character,Literals,MSDN对字符文字的描述如下: 文本中的多个字符根据需要从高->顺序到低顺序填充相应的字节。为了创建char值,编译器采用低阶字节 根据文件,以下结果应该是我想要的 unsigned int i = '1234'; // i = 0x34333231, memory[low->high] [0x31, 0x32, 0x33, 0x34] 然而,当转义序列出现时,事情发生了变化,这是我在电脑上做的结果 unsigned int i = '1234'; // i = 0x34333231 u

MSDN对字符文字的描述如下:

文本中的多个字符根据需要从高->顺序到低顺序填充相应的字节。为了创建char值,编译器采用低阶字节

根据文件,以下结果应该是我想要的

unsigned int i = '1234'; // i = 0x34333231, memory[low->high] [0x31, 0x32, 0x33, 0x34]
然而,当转义序列出现时,事情发生了变化,这是我在电脑上做的结果

unsigned int i = '1234'; // i = 0x34333231
unsigned int j = '\1\2\3\4\'; // j = 0x01020304 <- ???????
到目前为止,我完全迷路了。我甚至不能从这些测试用例中得出一个简单的规则


难道没有人知道这个问题吗?谢谢。

我看这里没有矛盾。当您使用字符文字为
int
类型赋值时,它们的处理方式与赋值给
wchar\t
的方式相同。唯一的区别是,
int
占用四个字节,
wchar\u t
有两个字节(通常)。请参见中的以下示例:


我看不出有什么矛盾。当您使用字符文字为
int
类型赋值时,它们的处理方式与赋值给
wchar\t
的方式相同。唯一的区别是,
int
占用四个字节,
wchar\u t
有两个字节(通常)。请参见中的以下示例:


谢谢你。然而,这不是我想要的。我知道int占用四个字节,wchar\u t有两个字节,但是,我需要知道,当我写'0\101\1001'时,内存中是什么样子的。VS2013似乎会将[0x41、0x30、0x40、0x31]从低地址放到高地址的内存中,这与MSDN描述的不同。已经有一段时间了。但我刚刚读了,还记得你的问题。以防万一谢谢你。然而,这不是我想要的。我知道int占用四个字节,wchar\u t有两个字节,但是,我需要知道,当我写'0\101\1001'时,内存中是什么样子的。VS2013似乎会将[0x41、0x30、0x40、0x31]从低地址放到高地址的内存中,这与MSDN描述的不同。已经有一段时间了。但我刚刚读了,还记得你的问题。以防万一
unsigned int k = '0\101\1001'; // k = 0x31403041 memory[low->high] [0x41 0x30 0x40 0x31] ??what the hell
unsigned int l = '0\1011\100'; // l = 0x40304131 memory[low->high] [0x31 0x41 0x30 0x40] ??what the hell again
wchar_t w1 = L'\100';   // L'@'
wchar_t w2 = L'\1000';  // C4066 L'@', 0 ignored 
wchar_t w3 = L'\009';   // C4066 L'\0', 9 ignored
wchar_t w4 = L'\089';   // C4066 L'\0', 89 ignored
wchar_t w5 = L'\qrs';   // C4129, C4066 L'q' escape, rs ignored
wchar_t w6 = L'\x0050'; // L'P'
wchar_t w7 = L'\x0pqr'; // C4066 L'\0', pqr ignored