如何理解int8_t和int64_t和size_t以及size_t
这篇文章给大家介绍如何理解int8_t和int64_t和size_t以及ssize_t,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
创新互联专业为企业提供自流井网站建设、自流井做网站、自流井网站设计、自流井网站制作等企业网站建设、网页设计与制作、自流井企业网站模板建站服务,十余年自流井做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
uint8_t之类
那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。既然它们都不是新的数据类型,只是使用typedef给类型起的别名,那为什么需要定义它们了?因为跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。
它们在stdint.h头文件中定义,下面的代码从/usr/include/stdint.h中复制
/* There is some amount of overlap with 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
看完上面的代码,对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就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
本文名称:如何理解int8_t和int64_t和size_t以及size_t
转载来源:http://scyanting.com/article/jdicei.html