判断机子是16位还是32位程序

wuyan16001 2008-11-05 08:55:51
vc++ 6.0编译器环境下编译以下程序,结果返回的是本机子是16bit的,这太出乎意料了,本人的机子再老也都是32位的啦,怎么会是16位的呢?这程序的问题看来是真的有点大了


int i = ~0;
if (i>65536)
{
cout<<"32bit"<<endl;
}
else{
cout<<"16bit"<<endl;
}
...全文
239 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2008-11-06
  • 打赏
  • 举报
回复
汗~~~~~

ls说明白了,我接分~~~~
  • 打赏
  • 举报
回复
sizeof(int)不行吗?楼主,干吗搞得那么奇怪。
wuyan16001 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zming 的回复:]
C/C++ code
if ( sizeof(int) == 4 )
{
cout << "32bits" << endl;
}
else if ( sizeof(int) == 2 )
{
cout << "16bits" << endl;
}
else
{
cout << "I don't know, haha" << endl;
}
[/Quote]
LS的这个好像更简单易懂啊
zming 2008-11-06
  • 打赏
  • 举报
回复

if ( sizeof(int) == 4 )
{
cout << "32bits" << endl;
}
else if ( sizeof(int) == 2 )
{
cout << "16bits" << endl;
}
else
{
cout << "I don't know, haha" << endl;
}
SeanHwang 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 R9R9R9 的回复:]
int i = ~0; = > unsigned int i = ~0;


~0 = 0xFFFFFFFF; 用int来表示就是 -1.
[/Quote]
nice!
lsldd 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Demon__Hunter 的回复:]
引用 3 楼 R9R9R9 的回复:
int i = ~0; = > unsigned int i = ~0;


~0 = 0xFFFFFFFF; 用int来表示就是 -1.


正解
[/Quote]
good
机智的呆呆 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 R9R9R9 的回复:]
int i = ~0; = > unsigned int i = ~0;


~0 = 0xFFFFFFFF; 用int来表示就是 -1.
[/Quote]

正解
zapdos 2008-11-05
  • 打赏
  • 举报
回复
一般int为一个机器字长...
非要找那些希奇古怪的也没办法
lann64 2008-11-05
  • 打赏
  • 举报
回复
这都是谁在误导。是测cpu还是在测编译器?
把你这个弄到tc上去试试看。
victormaomao 2008-11-05
  • 打赏
  • 举报
回复
这个题我刚碰到过。
#include <iostream>
using namespace std;

bool TestCPU32Bits( )
{
unsigned int nA=0xFFFF;
++nA;
if ( nA == 0 )
{
return false;
}
else
return true;
}


int main(int argc, char* argv[])
{
if ( TestCPU32Bits )
{
cout<<"32bits CPU"<<endl;
}
else
cout<<"16bits CPU"<<endl;
return 0;
}
lann64 2008-11-05
  • 打赏
  • 举报
回复
哪来的算法?
~0是-1,现在所有的机器-1都小于任何正整数吧。难道都是16位的。
zapdos 2008-11-05
  • 打赏
  • 举报
回复
也可以用
1<<16==1
判断
R9R9R9 2008-11-05
  • 打赏
  • 举报
回复
int i = ~0; = > unsigned int i = ~0;


~0 = 0xFFFFFFFF; 用int来表示就是 -1.
zapdos 2008-11-05
  • 打赏
  • 举报
回复
就是给00000000000...取反得最大值
应该用无符号值判断...
否则第一位是1
wuyan16001 2008-11-05
  • 打赏
  • 举报
回复
PS:
int i = ~0;
这代表什么意思

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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