不同变量类型在32位和64位机器上的长度
2012-03-27 13:28
274 查看
近日在centos下用c++/c写东西,这个程序的服务端运行在64位的centos下,程序是在32位机器上写的。其实这个是没有问题的,在编译的时候就已经决定了其所占内存的长度。如:
当然,为了保证数据传输的一致性制定了一套协议,用struct实现。为了保证输出过程中,数据的完整性,特别针对系统的不同对struct里变量的类型进行了优化。为了保证内存对齐方式的一致和数据存储空间的紧凑,都用 #pragma pack(1) 指定了对齐大小。
以下是在centos_x32和centos_x64下对应的类型长度:
/*******size of types on centos_x32*****************/
size of char:1
size of int:4
size of long :4
size of float :4
size of long long:8
size of double:8
size of long double:12
size of char * :4
/*******size of types on centos_x64*****************/
size of char:1
size of int:4
size of long :8
size of float :4
size of long long:8
size of double:8
size of long double:16
size of char * :8
long a = 0; printf("size of a is %d", sizeof a);上述代码在32位机器上编译、在32位/64位机器上执行时,结果均为size of a is 4。
当然,为了保证数据传输的一致性制定了一套协议,用struct实现。为了保证输出过程中,数据的完整性,特别针对系统的不同对struct里变量的类型进行了优化。为了保证内存对齐方式的一致和数据存储空间的紧凑,都用 #pragma pack(1) 指定了对齐大小。
以下是在centos_x32和centos_x64下对应的类型长度:
/*******size of types on centos_x32*****************/
size of char:1
size of int:4
size of long :4
size of float :4
size of long long:8
size of double:8
size of long double:12
size of char * :4
/*******size of types on centos_x64*****************/
size of char:1
size of int:4
size of long :8
size of float :4
size of long long:8
size of double:8
size of long double:16
size of char * :8
相关文章推荐
- 不同类型的变量在32位及64位机器上的大小
- 64位和32位编译环境下不同数据类型长度的区别
- 32位机器和64位机器各类型的长度对比
- GCC下32位与64位机器类型变量所占字节数
- 32位与64位机器下各数据类型长度对比
- C语言数据类型32位和64位不同
- 关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
- C语言中32位和64位的数据类型长度
- 不同类型变量的数据长度
- 32位和64位系统下C内置类型的长度
- 关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
- 32位与64位下各类型长度对比
- linux 32位与64位系统下数据类型长度的区别
- C与C++中的数据类型长度,16位,32位,64位机
- 32位与64位系统下不同数据类型的大小
- 32位,64位,各变量对应的长度(VS2010)
- 32位与64位下各类型长度对比
- C++主要类型的长度(32位与64位系统比较)
- 不同的数据类型在32位和64位下所占字节的区别
- C语言数据类型32位和64位不同