int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t详解

该文为转发,具体链接:https://blog.csdn.net/yz930618/article/details/84785970

工作中经常碰到int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t等数据类型,所以有必要对此进行梳理。

int_t同类

int_t 为一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是一种新的数据类型。因为跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以最有效的维护代码。

 int8_t      : typedef signed char;
 uint8_t    : typedef unsigned char;
 int16_t    : typedef signed short ;
 uint16_t  : typedef unsigned short ;
 int32_t    : typedef signed int;
 uint32_t  : typedef unsigned int;
 int64_t    : typedef signed  long long;
 uint64_t  : typedef unsigned long long;

Specifier    Common Equivalent    Signing    Bits    Bytes    Minimum Value    Maximum Value
int8_t    signed char    Signed    8    1    -128    127
uint8_t    unsigned char    Unsigned    8    1    0    255
int16_t    short    Signed    16    2    -32,768    32,767
uint16_t    unsigned short    Unsigned    16    2    0    65,535
int32_t    int    Signed    32    4    -2,147,483,648    2,147,483,647
uint32_t    unsigned int    Unsigned    32    4    0    4,294,967,295
int64_t    long long    Signed    64    8    -9,223,372,036,854,775,808    9,223,372,036,854,775,807
uint64_t    unsigned long long    Unsigned    64    8    0    18,446,744,073,709,551,615


size_t主要用于计数,如sizeof函数返回值类型即为size_t。在不同位的机器中所占的位数也不同,size_t是无符号数,ssize_t是有符号数。 

在32位机器中定义为:typedef  unsigned int size_t; (4个字节)
在64位机器中定义为:typedef  unsigned long size_t;(8个字节)
由于size_t是无符号数,因此,当变量有可能为负数时,必须使用ssize_t。因为当有符号整型和无符号整型进行运算时,有符号整型会先自动转化成无符号。

int main()
{
    unsigned short a;
    short int b = -1;
    a = b;
    cout << "b=" << b << endl;  //b=-1
    cout << "a=" << a << endl;  //a=65535
}
此外,int 无论在32位还是64位机器中,都是4个字节, 且带符号,可见size_t与int 的区别之处。
————————————————
版权声明:本文为CSDN博主「yz930618」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yz930618/article/details/84785970

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值