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

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

慕用4063026
TA貢獻(xiàn)195條經(jīng)驗 獲得超115個贊
#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;?? }
你試試這個呢
- 3 回答
- 1 關(guān)注
- 1780 瀏覽
添加回答
舉報
0/150
提交
取消