我的機器是32位PC,運行centos系統,我用GCC編譯我的C代碼。 而int變量佔用4 bytes.So我寫這樣的代碼......int變量的第四個字符有什麼問題?
#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 shoule存儲在內存中是這樣:
&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
地址。 – Pubby此外,這段代碼是依賴於endian和不可移植的。 – Lundin