39讲课后作业求助
#include <stdio.h>int main(void)
{
char a = 0, b = 0;
int *p = (int *)&b;
*p = 258;
printf("%d %d\n", a, b);
return 0;
}
为什么我的Linx系统结果是a = 0, b = 2啊,和小甲鱼的结果不一样,想了好长时间想不通,兄弟们帮我看看呗 本帖最后由 jhq999 于 2022-1-1 18:04 编辑
258=0x00000102
所以小端模式下char类型变量b=2
大端模式下 b=0 jhq999 发表于 2022-1-1 18:01
258=0x00000102
所以小端模式下char类型变量b=2
大端模式下 b=0
我知道小端b=2, 但是为啥a = 0啊, 不应该是a = 1吗 guyihui 发表于 2022-1-1 18:28
我知道小端b=2, 但是为啥a = 0啊, 不应该是a = 1吗
我试了你的代码,显示 a = 1, b = 2,我是 Windows - gcc 编译,我不清楚 Linux 汇编怎么操作的 本帖最后由 jhq999 于 2022-1-1 20:51 编辑
guyihui 发表于 2022-1-1 18:28
我知道小端b=2, 但是为啥a = 0啊, 不应该是a = 1吗
申请内存时a和b没挨着呗
#include <stdio.h>
int main(void)
{
char a = 0, b = 0;
int *p = (int *)&b;
*p = 258;
printf("%d %d\n", a, b);
printf("%p %p\n", &a, &b);//看看a和b的地址
return 0;
}
0 2
008FF93B 008FF92F jhq999 发表于 2022-1-1 20:46
申请内存时a和b没挨着呗
哦哦哦,对对, 恍然大悟,谢谢大哥{:10_323:}
页:
[1]