小编AAD*_*A.R的帖子

如果我们给变量a = 123第一个字节赋值123但是如果我们给a = 1234那么其他值就会到来

当我这样给予时:

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

c memory int

0
推荐指数
1
解决办法
92
查看次数

标签 统计

c ×1

int ×1

memory ×1