当我这样给予时:
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的第一个和第二个字节存储不同的值.请解释它是如何工作的?