怎么判断操作系统(Windows)的位数?

沙尘暗影 2013-07-30 03:18:43
8*sizeof(void*)是程序的位数,不是系统的位数
...全文
378 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2013-07-31
  • 打赏
  • 举报
回复
davidyu720 2013-07-31
  • 打赏
  • 举报
回复
一般编译出来的程序要么是32位,要么是64位。 如果OS是64位的,跑32位程序,sizeof(long) == 4成立。所以用sizeof(long)、sizeof(void*)是不能正确判断的。 如果OS是32位,跑64位程序是启动不了的。
引用 6 楼 buyong 的回复:
http://www.360doc.com/content/12/0327/12/1016783_198221448.shtml
这个真心好
生命沉思者 2013-07-31
  • 打赏
  • 举报
回复

if (sizeof(char *)==4)
{
	32位;
} 
else if (sizeof(char *)==8)
{
	64位;
}
生命沉思者 2013-07-31
  • 打赏
  • 举报
回复


最简单的办法

if (sizeof(long) == 4)
32位
else if (sizeof(long) == 8)
64位;

lpcads 2013-07-31
  • 打赏
  • 举报
回复
引用 7 楼 max_min_ 的回复:


Windows 下 运行-cmd  左上角路径  system32就是32位了!
system64就是64位了
不明觉厉。。。
沙尘暗影 2013-07-30
  • 打赏
  • 举报
回复
引用 6 楼 buyong 的回复:
http://www.360doc.com/content/12/0327/12/1016783_198221448.shtml
这个很好
max_min_ 2013-07-30
  • 打赏
  • 举报
回复


Windows 下 运行-cmd  左上角路径  system32就是32位了!
system64就是64位了
buyong 2013-07-30
  • 打赏
  • 举报
回复
for linux, use "uname -i"
ZG 2013-07-30
  • 打赏
  • 举报
回复
1.配置成64位编译,sizeof(void*) * 8 = 64,否则按32位编译,仍是32; 2.调用API SYSTEM_INFO si; SafeGetNativeSystemInfo(&si);
水平不流 2013-07-30
  • 打赏
  • 举报
回复
这样不准确.64位系统下. void * 也可能只是32位. 具体应该还是看编译器的实现.
沙尘暗影 2013-07-30
  • 打赏
  • 举报
回复
引用 1 楼 usingnamespace_std 的回复:
sizeof(void*)是内存地址的长度,单位是字节,当然是操作系统的位数啊
运行在64位系统中的32位程序,void*是32位
Jackie_Zhu 2013-07-30
  • 打赏
  • 举报
回复
sizeof(void*)是内存地址的长度,单位是字节,当然是操作系统的位数啊

64,648

社区成员

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

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