时间:2021-05-19
在代码中经常看到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;">#ifndef __int8_t_defined# define __int8_t_definedtypedef signed char int8_t;typedef short int int16_t;typedef int int32_t;# if __WORDSIZE == 64typedef long int int64_t;# else__extension__typedef long long int int64_t;# endif#endiftypedef unsigned char uint8_t;typedef unsigned short int uint16_t;#ifndef __uint32_t_definedtypedef unsigned int uint32_t;# define __uint32_t_defined#endif#if __WORDSIZE == 64typedef 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的相关问题(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
话不多说,请看代码:ifnotobject_id('Tempdb..#T')isnulldroptable#TGoCreatetable#T([ID]int,[
典型的nginx中的module结构体的定义如下:typedefstruct{ngx_int_t(*preconfiguration)(ngx_conf_t*c
_access函数int_access(constchar*path,intmode);int_waccess(constwchar_t*path,intmod
灯管t5t6t8意思是: T代表“Tube”,表示管状的,T后面的数字表示灯管直径。T8就是有8个“T”,一个T为1/8英寸。T6就是有6个“T”,一个T为1
如下表:CREATETABLE`t1`(`userid`int(11)DEFAULTNULL,`atime`datetimeDEFAULTNULL,KEY`id