浅谈int8_t int64_t size_t ssize_t的相关问题(详解)
在代码中经常看到int8_t/int16_t/int32_t/int64_t/uint8_t/size_t/ssize_t,以前对这个问题一直是稀里糊涂的,不明白它们到底是什么数据类型,现在上班了,必须把它弄明白了
uint8_t之类
那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。既然它们都不是新的数据类型,只是使用typedef给类型起的别名,那为什么需要定义它们了?因为跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。
它们在stdint.h头文件中定义,下面的代码从/usr/include/stdint.h中复制
<span style="font-family:Microsoft YaHei;font-size:14px;"> /* There is some amount of overlap with <sys/types.h> as known by inet code */ #ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE == 64 typedef long int int64_t; # else __extension__ typedef long long int int64_t; # endif #endif /* Unsigned. */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; #ifndef __uint32_t_defined typedef unsigned int uint32_t; # define __uint32_t_defined #endif #if __WORDSIZE == 64 typedef unsigned long int uint64_t; #else __extension__ typedef unsigned long long int uint64_t; #endif</span>
看完上面的代码,对uint8_t等就有了清晰明确的认识了
size_t/ssize_t
关于size_t/ssize_t,着急的同学可以先看结论
size_t 无符号整型 32bit系统上等同于unsigned int 64bit系统上等同于unsigned long int
ssize_t 有符号整型 32bit系统上等同于int 64bit系统上等同于long int
32bit系统中 long int为32bit,64bit系统中 long int为64bit
可以从/usr/include/sys/types.h一层层查找,最终会找到ssize_t和size_t的定义。
如何判断系统位数
getconf WORD_BIT
getconf LONG_BIT
或者使用uname -a
以上这篇浅谈int8_t int64_t size_t ssize_t的相关问题(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
栏 目:C语言
本文标题:浅谈int8_t int64_t size_t ssize_t的相关问题(详解)
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/1693.html
您可能感兴趣的文章
- 01-10浅谈C/C++中的static与extern关键字的使用详解
- 01-10浅谈内联函数与宏定义的区别详解
- 01-10浅谈C++中的string 类型占几个字节
- 01-10浅谈关于指针作为参数并改变它的值的问题
- 01-10浅谈C#互操作的内存溢出问题
- 01-10浅谈C语言中的强符号、弱符号、强引用和弱引用
- 01-10浅谈MFC 改变控件大小和位置
- 01-10浅谈C++对象组合
- 01-10浅谈const变量赋值报错分析
- 01-10浅谈VC++中的内联
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10C#中split用法实例总结
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-11ajax实现页面的局部加载
- 01-10SublimeText编译C开发环境设置
- 04-02jquery与jsp,用jquery
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10delphi制作wav文件的方法