我的机器是一台运行 centos 系统的 32 位 PC,我使用 GCC 编译我的 C 代码。而int变量占用4个字节。所以我写了这样的代码......
#include "stdio.h"
int main(){
int a=1;
printf("%c",*(&a+1)+65);
printf("%c",*(&a+2)+65);
printf("%c",*(&a+3)+65);
}
我是这样想的:PC 是 32 位的,所以变量 a 应该像这样存储在内存中:
&a 00000001
&a+1 00000000
&a+2 00000000
&a+3 00000000
所以我认为答案应该是:AAA
但真正得到的是:qA(最后一个没有打印出来。)
我确实对结果感到困惑。更重要的是,如果我消化最后两个 printf.which 是:
#include "stdio.h"
int main(){
int a=1;
printf("%c",*(&a+1)+65);
}
然后我得到了我想要的:A
我的代码有什么问题或什么;真正的错误是我考虑将变量存储在内存中......请帮我解决这些问题,谢谢。