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 关注
- 1721 浏览
添加回答
举报
0/150
提交
取消