我见过C++社区中的很多人(特别是freenode上的## c ++)对windows api 的使用wstrings和使用感到不满wchar_t.究竟是什么"错误"有wchar_t和wstring,如果我要支持国际化,有一些什么替代宽字符?
当我这样给予时:
int main()
{
int a =123;
char *p =(char*)&a;
printf("%d\n",*p);
++p;
printf("%d\n",*p);
++p;
printf("%d\n",*p);
++p;
printf("%d\n",*p);
}
Run Code Online (Sandbox Code Playgroud)
我有输出像
123
0
0
0
Run Code Online (Sandbox Code Playgroud)
但我们这样给了:
int main()
{
int a =1234;
char *p =(char*)&a;
printf("%d\n",*p);
++p;
printf("%d\n",*p);
++p;
printf("%d\n",*p);
++p;
printf("%d\n",*p);
}
Run Code Online (Sandbox Code Playgroud)
我输出为
-46
4
0
0
Run Code Online (Sandbox Code Playgroud)
我对系统如何将值(123/1234)存储在4个字节的变量a中感到困惑.如果它小于127,则第一个字节占据我们作为输入的值(iw 123).
但是如果该值大于127,则变量a的第一个和第二个字节存储不同的值.请解释它是如何工作的?