c语言编程需要注意的64位和32机器的区别

c语言编程需要注意的64位和32机器的区别

ID:8810836

大小:15.50 KB

页数:2页

时间:2018-04-08

c语言编程需要注意的64位和32机器的区别_第1页
c语言编程需要注意的64位和32机器的区别_第2页
资源描述:

《c语言编程需要注意的64位和32机器的区别》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一、数据类型:特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:(1)16位平台char1个字节8位short2个字节16位int2个字节16位long4个字节32位指针2个字节(2)32位平台char1个字节8位short2个字节16位int4个字节32位long4个字节longlong8个字节指针4个字节(3)64位平台char1个字节short2个字节int4个字节long8个字节(区别)longlong8个字节指针8个字节(区别)二、编程注意事项为了保证平台的通用性,程序

2、中尽量不要使用long数据库型。可以使用固定大小的数据类型宏定义,这些宏定义需要引用stdint.h头文件:typedefsignedcharint8_ttypedefshortintint16_t;typedefintint32_t;#if__WORDSIZE==64typedeflongintint64_t;#else__extension__typedeflonglongintint64_t;#endif三、使用int时也可以使用intptr_t来保证平台的通用性,它在不同的平台上编译时长度不同,但都是标准的平台字长,比如64位机器它的长度

3、就是8字节,32位机器它的长度是4字节,使用它可以安全地进行整数与指针的转换运算,也就是说当需要将指针作为整数运算时,将它转换成intptr_t进行运算才是安全的。intptr_t需要引用stddef.h头文件,它的定义如下:#if__WORDSIZE==64typedeflongintintptr_t;#elsetypedefintintptr_t;#endif编程中要尽量使用sizeof来计算数据类型的大小以上类型定义都有相应的无符号类型。四、使用ssize_t和size_t它们分别是unsigned和signedsizeofcomputer

4、wordsize。它们也是表示计算机的字长,在32位机器上是int型,在64位机器上long型。使用它们对于增加平台的通用性有很大好处,从某种意义上来说它们等同于intptr_t和uintptr_t。使用它们也需要引用stddef.h头文件。五、socket的accept函数在有些操作系统上使用size_t是不正确的,因为accept接收的int*类型,而size_t的长度可能会超过int*的长度限制,导致错误。后来BSD使用sock_t来替代它。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。