C++,根据sizeof(指针)的大小判断操作系统的位数可以么
答案:6 悬赏:80 手机版
解决时间 2021-03-19 18:14
- 提问者网友:呐年旧曙光
- 2021-03-19 13:46
C++,根据sizeof(指针)的大小判断操作系统的位数可以么
最佳答案
- 五星知识达人网友:狂恋
- 2021-03-19 15:20
不可以。楼上说的sizeof(int)更加不靠谱。
sizeof(指针)的大小只跟当前程序的编译设置有关。比如,你用VC编译一个32位的程序,那么sizeof(void *)的值就是32。就算你在64位的windows上运行这个程序,sizeof(void*)还是32,因为这已经在编译的时候就确定了。同样,如果你编译的是一个64位程序,那么sizeof(void*)就是64,就算将来有128位系统,你这个程序里的sizeof(void*)也仍然是64.
sizeof(int)就更加不靠谱,因为C/C++标准只规定了sizeof(int)一定要小于或者等于sizeof(long),但没规定具体应该多大。比如,VC下编译64位程序,sizeof(int)是32。但64位linux程序里,
g++的sizeof(int)是64。
sizeof(指针)的大小只跟当前程序的编译设置有关。比如,你用VC编译一个32位的程序,那么sizeof(void *)的值就是32。就算你在64位的windows上运行这个程序,sizeof(void*)还是32,因为这已经在编译的时候就确定了。同样,如果你编译的是一个64位程序,那么sizeof(void*)就是64,就算将来有128位系统,你这个程序里的sizeof(void*)也仍然是64.
sizeof(int)就更加不靠谱,因为C/C++标准只规定了sizeof(int)一定要小于或者等于sizeof(long),但没规定具体应该多大。比如,VC下编译64位程序,sizeof(int)是32。但64位linux程序里,
g++的sizeof(int)是64。
全部回答
- 1楼网友:雾月
- 2021-03-19 17:31
此类问题建议去CSDN等专业网上去找!
- 2楼网友:蓝房子
- 2021-03-19 17:14
一个整数就是一个机器字长
- 3楼网友:枭雄戏美人
- 2021-03-19 16:50
sizeof(anytypename*)都可以,还可以用其它方法比如sizeof(int)追问我在网上查找资料,好像有说sizeof(指针)的大小跟编译器有关追答的确是与编译器有关。不好意思
楼下的也不正确,sizeof(int)与sizeof(types*)是一个意思
我也比较模糊了,比如TC在32位机上的INT就是16位的,那么又是如何地址转换的呢追问郁闷了,我编写的一个下载器需要根据用户的操作系统位数来指定下载哪个位数版本的软件,如果指针和楼下所说的int都不准确的话,还有其他可行的方法么追答坐等高人出现..
楼下的也不正确,sizeof(int)与sizeof(types*)是一个意思
我也比较模糊了,比如TC在32位机上的INT就是16位的,那么又是如何地址转换的呢追问郁闷了,我编写的一个下载器需要根据用户的操作系统位数来指定下载哪个位数版本的软件,如果指针和楼下所说的int都不准确的话,还有其他可行的方法么追答坐等高人出现..
- 4楼网友:我住北渡口
- 2021-03-19 16:40
最好用sizeof(int),不同机器上的指针不一定会与系统位数相等,int倒是保证相等
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯