[转载]int,int32_t,int64_t
来源:互联网 发布:e4a磁力解析源码 编辑:程序博客网 时间:2024/06/03 21:53
原文地址:int,int32_t,int64_t作者:走向希望
这些事跨平台编程导致的;一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台
char
short
int
long
指针
32位平台
char
short
int
long
long long 8个字节
指针
64位平台
char
short
int
long
long long 8个字节
指针
二、编程注意事项
为了保证平台的通用性,程序中尽量不要使用long数据库型。可以使用固定大小的数据类型宏定义:
typedef signed char
typedef short int
typedef int
# if __WORDSIZE == 64
typedef long int
# else
__extension__
typedef long long int
#endif
三、使用int时也可以使用intptr_t来保证平台的通用性,它在不同的平台上编译时长度不同,但都是标准的平台长度,比如64位机器它的长度就是8字节,32位机器它的长度是4字节,定义如下:
#if __WORDSIZE == 64
typedef long int
#else
typedef int
#endif
编程中要尽量使用sizeof来计算数据类型的大小
以上类型定义都有相应的无符号类型。
另外还有ssize_t和size_t分别是sign size_t和unsigned signed size of computerwordsize。它们也是表示计算机的字长,在32位机器上是int型,在64位机器上long型,从某种意义上来说它们等同于intptr_t和uintptr_t。它们在stddef.h里面定义。需要注意的是socket的accept函数在有些操作系统上使用size_t是不正确的,因为accept接收的int*类型,而size_t可能是long int 类型。后来BSD使用sock_t来替代它。
- [转载]int,int32_t,int64_t
- [转载]int,int32_t,int64_t
- [转载]int,int32_t,int64_t
- int,int32_t,int64_t
- int,int32_t,int64_t
- int,int32_t,int64_t
- int,int32_t,int64_t
- int,int32_t,int64_t
- int,int32_t,int64_t
- int,int32_t,int64_t
- int int32_t int64_t 跨平台
- int与int32_t与int64_t
- int,int32_t,int64_t和struct内存对齐
- int ,long , long long,int32_t,int64_t 类型表示范围
- int8_t int16_t int32_t int64_t
- stdint.h[int8_t, int16_t, int32_t, int64_t]
- stdint.h[int8_t, int16_t, int32_t, int64_t]
- (u)int8_t/(u)int16_t/(u)int32_t/(u)int64_t/(u)intptr_t简介
- 安装vc++.6.0时出现you must first run installation wizard before running this step 问题
- 关于 VC6.0 安装时候的问题C/C++ Header File 和 C++ Source Files
- 关于 MATLAB7.0 在WIN7上运行问题
- win7 下安装 oracle 10g 错误:
- RoboCup2d 环境配置
- [转载]int,int32_t,int64_t
- LINUX 下 GDB 调试 ( 转载 )
- GDB 、 LINUX 下 GDB 调试 小结---->基础知识!
- Linux下静态库和动态库的创建和使用( 转载 )
- C下的链表的静态,动态创建,删除,插入
- makefile:中文版最权威的makefile文档( 转载 )
- poj 1068 括号匹配
- Keycode对照表
- poj 2485 秒杀