如何通过指针知道系统的位数?

C语言课上,老师给一段代码

char *p="Hello World";
printf("%p",p);

输出的是一个八位的十六进制数,类似00B67BD0

然后问她的操作系统的多少位的?答案是64位。

我的理解是,把十六进制转换成二进制,那应该有8*4=32位,既内存地址可由一个32位的二进制表示,所以系统是32位。不知道是哪里错了。

某向阳
浏览 1684回答 3
3回答

onemoo

那你觉得64位系统上运行32位程序又如何呢?确实如你所想,64位程序中打印出的 p 应该是16位十六进制数。但这个编译环境可能编译出的是32位程序。所以这完全有可能和操作系统的位数无关。

慕用4063026

#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;   }你试试这个呢
打开App,查看更多内容
随时随地看视频慕课网APP