c语言中文字符串的存放顺序

在vc++上做了如下实现:
void main()
{
char pc = "我";
unsigned short me = unsigned short('我');
char *pc1 = (char
)&me;

system("pause");

}
结果如图所示:
图片说明
可见pc指针指向的‘我’ 和 me中存放的我‘我’字节顺序不一样,
这是什么原因?

pc = "我";改成 pc = L"我";

你是一个很细心的同学。这很好。
Intel处理器是一种小端处理器,对于short类型,它在内存中的分布是倒过来的。但是char不受这个约束。

http://www.cnblogs.com/graphics/archive/2011/04/22/2010662.html

对于多字节,Windows 平台是低字节优先的,称为小端;网络字节一般是高字节优先的,称为大端。
单字节,就按实际的顺序存贮。

试用TCHAR *pc = "我";

用TCHAR 结果
图片说明

用TCHAR 结果
图片说明

如下, 单字节排序不变, 多字节会倒过来

            char* pc = "我";                                        //   ce    d2
            char pc2[] = "ab";                                     //   61    62    00
            unsigned short me = unsigned short('我');  //   d2    ce
            unsigned short me2 = 'ab';                       //   62    61

            //   所以在使用多字节表示字符串的时候要倒着写, 比如 mine 
            unsigned long signature  = 'enim';