#include<stdio.h>
int main()
{
int a;
char *x;
x = (char *) &a;
a = 512;
x[0] = 1;
x[1] = 2;
printf("%d\n",a);
return 0;
}
我无法理解输出是如何依赖于 513 甚至机器的事实?我能感觉到类型转换起着重要作用,但幕后发生了什么,有人能帮我想象一下这个问题吗?
最佳答案
int a
以 4 个字节存储在内存中。数字 512
在您的机器上表示为:
0 2 0 0
当您分配给 x[0]
和 x[1]
时,它会将其更改为:
1 2 0 0
这是数字 513
。
这是机器相关的,因为多字节数字中的字节顺序不是由 C 语言指定的。
关于c - C 中的指针与类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664832/