我遇到了一个挥舞代码,但我无法理解它:
int x=259;
char *p = (char*)&x;
printf("%d ", *p);
printf("%d ", *(p + 1));
printf("%d ", *(p + 2));
printf("%d ", *(p + 3));
输出为:
3 1 0 0
我尝试将 x 更改为许多不同的数字,结果让我更加困惑
X Output
127 127 0 0 0
128 -128 0 0 0
256*127 0 127 0 0
256*128 0 -128 0 0
等等...
谁能解释一下 p 指向什么
char *p = (char*)&x;
它打印出什么。 谢谢。
最佳答案
int x=259;
char *p = (char*)&x;
x 是 4 个字节 0x03 0x01 0x00 0x00
因为您所在的机器是小端字节序(请参阅 https://en.wikipedia.org/wiki/Endianness )
所以
- p 指向第一个字节 = 3
- p+1 点为 1
- p+ 2 和 + 3 指向 0
您可以对其他值进行相同的分析。
关于c - int x=259中p指向什么; char *p = (char*)&x;?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48568951/