发布网友 发布时间:2022-04-24 04:15
共4个回答
热心网友 时间:2023-09-04 19:46
32位和64位指的是操作系统的位数,映射到C语言中,最直观的就是指针类型占用的字节数。
1 32位系统:
地址占32位,所以指针类型同样占32位,即4字节。
2 64位系统:
地址占64位,所以指针类型同样占64位,即8字节。
于是,只需要判断任意一个指针的sizeof值,即可获取到位数。
如
int main()
热心网友 时间:2023-09-04 19:47
有一个简单的方法来确定所编译的程序的位数,判断指针变量的长度。追答你的意思是判断程序所运行的操作系统的位数吧,我想可以调用windows相关API判断。
我提供的只是判断本程序的位数。你的sizeof(int)也一样。
要分清是程序的位数 or 操作系统的位数。windows64位可以运行32位的程序。
热心网友 时间:2023-09-04 19:47
简单说,C语言本身是做不到这个工作的,只能人工判定,根据机器和编译器的位数定义宏追答32位下编译出来的代码在64位上是不能用的,你加了宏定义也没用,因为宏定义是在编译时进行确定的,不是在运行时确定的。所以,只能重新在64位机上进行重新编译才有可能能运行(要看你的代码可移植度够不够高!)
热心网友 时间:2023-09-04 19:48
经过对include的翻查,最后确定gcc以__i386__来进行32位编码,而以__x86_64__来进行64位编码;64位的gentoo下stdio.h就是个简单例子(i不晓得其它的是不是?);而且在bits/wordsize.h中对这两个定义进行了综合,以__WORDSIZE的值来表示机器类型,大家可以直接去看看