我想问一下为什么

小陈程序员 2014-07-05 08:49:20
用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数。
答案:
如果是32位系统下,这样写我可以理解:
int i = 65535;
cout << "i= " << i << endl; //输出65535

int j = 65536;
cout << "j= " << j << endl; //输出65536
16位系统下,我也可以理解:
int n = 65536;
cout << "n= " << n << endl; //输出0

int m = 65535;
cout << "m= " << m << endl; //输出-1

下面这个我就不理解了,输出的是16Bit,是不是写反了,第一个输出应该是16Bit,第二个输出才是32Bit啊???
int p = ~0;

if (p>65536)
{
cout << "32Bit" << endl;
}
else
{
cout << "16Bit" << endl;
}

求大神们解答解答……
...全文
241 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2014-07-12
  • 打赏
  • 举报
回复
这是代码和语言本身不能解决的问题。
taodm 2014-07-10
  • 打赏
  • 举报
回复
你用sizeof都得不到答案的。你就是用os的函数都未必能得到答案的。 就别在这个不可能有解的问题上多浪费时间。
小陈程序员 2014-07-10
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
操作系统和编译环境不是一回事。
确实,操作系统跟编译环境不一样。
palm_m 2014-07-09
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
操作系统和编译环境不是一回事。
同意这个观点。如果要获得操作系统的位数应该使用系统调用或者api
yangyunzhao 2014-07-09
  • 打赏
  • 举报
回复
引用 5 楼 palm_m 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:] 操作系统和编译环境不是一回事。
同意这个观点。如果要获得操作系统的位数应该使用系统调用或者api[/quote] 经常在64位下编译运行32位的。不过没有尝试在32位下编译运行64位的
赵4老师 2014-07-08
  • 打赏
  • 举报
回复
操作系统和编译环境不是一回事。
fang 2014-07-08
  • 打赏
  • 举报
回复
引用 2 楼 CL0419 的回复:
[quote=引用 1 楼 u014444402 的回复:]
 int p = ~0;

    if (p>65536)
   {
cout << "32Bit" << endl;
   }
    else
    {
cout << "16Bit" << endl;	
    }
这样判断不了的,p的值是-1. 还有一点就是int的宽度与操作系统的位数没有关系。 int的宽度与编译器有关系。
意思就是说答案是错的……???[/quote] 你在XP下用trubo c(界面是全蓝的)打印下sizeof(int)的值试下,应该打印出来不是你看到的32,这个确实和编译器有关,用API读系统版本来查,非要程序也有简单的。 char *p0 = 0; char *p1 = p0 + 1; printf("%d",8*((int)&p0 - (int)&p1));
小陈程序员 2014-07-05
  • 打赏
  • 举报
回复
引用 1 楼 u014444402 的回复:
 int p = ~0;

    if (p>65536)
   {
cout << "32Bit" << endl;
   }
    else
    {
cout << "16Bit" << endl;	
    }
这样判断不了的,p的值是-1. 还有一点就是int的宽度与操作系统的位数没有关系。 int的宽度与编译器有关系。
意思就是说答案是错的……???
灌水号 2014-07-05
  • 打赏
  • 举报
回复
 int p = ~0;

    if (p>65536)
   {
cout << "32Bit" << endl;
   }
    else
    {
cout << "16Bit" << endl;	
    }
这样判断不了的,p的值是-1. 还有一点就是int的宽度与操作系统的位数没有关系。 int的宽度与编译器有关系。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧