关于win32 和 win64 下简单类型的长度

时间:2022-09-01 11:09:26
由于现在的系统涉及到用户使用64位win7环境,而程序是在winXP下开发的。由于程序用到了序列化文件的读写,所以很担心在win7下是否有问题。麻烦各位告诉我,在32位和64位下,以下数据类型的长度各是多少?
int
float 
double

9 个解决方案

#1


是指windows操作系统下,不是linux,谢谢

#2


一样的,都是4/4/8

但是 指针变成8字节了

#3


sizeof最准了。

#4


不是说int类型的长度是与操作系统相关的吗,为啥64位下还是4字节呢?

#5


引用 4 楼 84830388 的回复:
不是说int类型的长度是与操作系统相关的吗,为啥64位下还是4字节呢?


相关,但不一定

C++标准则根本没做规定。除了char,只规定相对大小,比如long不能小于int

反正Windows保持32位

#6


基本数据类型的长度由编译器决定,int可能是4字节,也可能是8字节。
若需确定使用32还是64位的整形,在windows下应使用:INT32、UINT32、INT64或UINT64。
MSDN如是说。

#7


那double类型在windows下所有环境下都是8字节吗?有特例吗?

#8


指针8字节,long8字节,其他不变。但是编译器不同会有差别。

#9


还有个问题需要提醒楼主:
变量占用的内存空间大小是个编译时值,在编译时就确定了。
如果在32位机上编译的,而且int占用4字节内存空间,则程序在64位机上运行,int型还是占用4字节。但如果同样的代码在64位机上编译,则可能int占用8字节。
所以,你的程序编译好后,在32位还是64位机上运行,单从int型等占用内存空间长度方面来说,影响不大。

#1


是指windows操作系统下,不是linux,谢谢

#2


一样的,都是4/4/8

但是 指针变成8字节了

#3


sizeof最准了。

#4


不是说int类型的长度是与操作系统相关的吗,为啥64位下还是4字节呢?

#5


引用 4 楼 84830388 的回复:
不是说int类型的长度是与操作系统相关的吗,为啥64位下还是4字节呢?


相关,但不一定

C++标准则根本没做规定。除了char,只规定相对大小,比如long不能小于int

反正Windows保持32位

#6


基本数据类型的长度由编译器决定,int可能是4字节,也可能是8字节。
若需确定使用32还是64位的整形,在windows下应使用:INT32、UINT32、INT64或UINT64。
MSDN如是说。

#7


那double类型在windows下所有环境下都是8字节吗?有特例吗?

#8


指针8字节,long8字节,其他不变。但是编译器不同会有差别。

#9


还有个问题需要提醒楼主:
变量占用的内存空间大小是个编译时值,在编译时就确定了。
如果在32位机上编译的,而且int占用4字节内存空间,则程序在64位机上运行,int型还是占用4字节。但如果同样的代码在64位机上编译,则可能int占用8字节。
所以,你的程序编译好后,在32位还是64位机上运行,单从int型等占用内存空间长度方面来说,影响不大。