为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C++
某向阳 2017-12-14 15:45:24
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位程序。所以这完全有可能和操作系统的位数无关。

查看完整回答
1 反对 回复 2017-12-15
?
慕用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;  
}

你试试这个呢

查看完整回答
1 反对 回复 2017-12-15
  • 3 回答
  • 1 关注
  • 1721 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信