C語言課上,老師給一段代碼char?*p="Hello?World";
printf("%p",p);輸出的是一個(gè)八位的十六進(jìn)制數(shù),類似00B67BD0然后問她的操作系統(tǒng)的多少位的?答案是64位。我的理解是,把十六進(jìn)制轉(zhuǎn)換成二進(jìn)制,那應(yīng)該有8*4=32位,既內(nèi)存地址可由一個(gè)32位的二進(jìn)制表示,所以系統(tǒng)是32位。不知道是哪里錯(cuò)了。
3 回答

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
那你覺得64位系統(tǒng)上運(yùn)行32位程序又如何呢?
確實(shí)如你所想,64位程序中打印出的 p 應(yīng)該是16位十六進(jìn)制數(shù)。
但這個(gè)編譯環(huán)境可能編譯出的是32位程序。所以這完全有可能和操作系統(tǒng)的位數(shù)無關(guān)。

慕用4063026
TA貢獻(xiàn)195條經(jīng)驗(yàn) 獲得超115個(gè)贊
#include?<stdio.h>?? ?? int?main(int?argc,?char?*argv[])?? {?? ????int?*p?=?(int?*)~0;?? ????int?count?=?0;?? ????for?(;p!=0;)?? ????{?? ????????p?=?(int?*)((long)p?<<?1);?? ????????count++;?? ????}?? ????printf("%d\n",count);?? ????return?0;?? }
你試試這個(gè)呢
- 3 回答
- 1 關(guān)注
- 1772 瀏覽
添加回答
舉報(bào)
0/150
提交
取消