C語言課上,老師給一段代碼char?*p="Hello?World";
printf("%p",p);輸出的是一個八位的十六進制數,類似00B67BD0然后問她的操作系統的多少位的?答案是64位。我的理解是,把十六進制轉換成二進制,那應該有8*4=32位,既內存地址可由一個32位的二進制表示,所以系統是32位。不知道是哪里錯了。
3 回答
onemoo
TA貢獻883條經驗 獲得超454個贊
那你覺得64位系統上運行32位程序又如何呢?
確實如你所想,64位程序中打印出的 p 應該是16位十六進制數。
但這個編譯環境可能編譯出的是32位程序。所以這完全有可能和操作系統的位數無關。
慕用4063026
TA貢獻195條經驗 獲得超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 關注
- 1808 瀏覽
添加回答
舉報
提交
取消
