int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t区别
工作中经常碰到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与ssize_t
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=-1cout << "a=" << a << endl; //a=65535
}
此外,int 无论在32位还是64位机器中,都是4个字节, 且带符号,可见size_t与int 的区别之处。
int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t区别相关推荐
- int8_t / int16_t / int32_t /int64_t 是什么数据类型
这些数据类型是 C99 中定义的 #ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t; type ...
- int32_t int64_t和int的区别
有些数据类型的确切字节数依赖于程序是如何被编译的,数据类型 long -般在 32 位程 序中为4字节 ,在 64 位程序中则为8字节("32 位程序"或 "64 位程序 ...
- int8_t int16_t int32_t等数据类型的定义
一.数据类型特别是int相关的类型在不同位数机器的平台下长度不同.C99标准并不规定具体数据类型的长度大小,只规定级别: 16位平台 char 1个字节8位 short ...
- C中int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t区别
工作中经常碰到int8_t.int16_t.int32_t.int64_t.uint8_t.size_t.ssize_t等数据类型,所以有必要对此进行梳理. int_t同类 int_t 为一个结构的标 ...
- linux中的size_t和ssize_t区别
一:区别 (1)作用不同 size_t 反映内存中对象的大小(以字节为单位) ssize_t 供返回字节计数或错误提示的函数使用. (2)类型不同 size_t 的定义在: /usr/include/ ...
- linux c size_t ssize_t 简介
总结: 首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的.siz ...
- c语言程序中u8是什么意思,c – __u8和uint8_t之间的区别
有人可以解释uint8_t和__u8类型之间的区别吗? 我知道uint8_t是在stdint.h中定义的,并且它们在每个unix系统上都可用. /* Unsigned. */ typedef unsi ...
- 数组赋值给vector和list,顺便说明int和size_t的区别
如果a是数组,那么a.size() 返回的类型是size_t类型. 数组赋值给vector或者list,可以采用地址. #include <iostream> #include <s ...
- C99标准和C89标准的区别
转载出处:http://blog.csdn.net/jsufcz/article/details/6051836 GCC 支持C99,通过 --std = c99命令行参数开启. 例如:gcc --s ...
最新文章
- The mountain is unchanged,but the heart is changed
- mysql解压版(免装版)安装过程缺失data文件处理方式
- 谷歌身份验证器验证码不对怎么回事_地面最强下载器:IDM+【安卓】详细介绍...
- 微软成功测试氢燃料电池,为数据中心连续供电 48 小时
- 【CodeForces - 266B 】Queue at the School (模拟)
- JS学习笔记5-JavaScript 变量
- 信息学奥赛一本通(1052:计算邮资)
- div元素显示隐藏切换,点击空白位置消失
- JetBrains系列WebStorm等中文输入法无法跟随光标的问题的解决办法
- 【WP开发】JSON数据的读与写
- 基于R语言、MATLAB、Python机器学习方法与案例分析
- Python爬取新东方在线网站大学英语六级词汇
- db2dual_DB2中类似于ORACLE中的DUAL表的表
- CF140C New Year Snowmen(贪心+优先队列)
- 大一ACM比赛观摩感悟(比赛)
- 网络错误CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/mai...
- 交易日九点到九点半的挂单撤单以及价格的一点心得
- 使用CSS中clip-path属性实现奥运五环
- 区块链:从底层技术时代走向产品时代的跃进
- 用Java程序仿真模拟病毒传播过程(已开源)
热门文章
- 分治算法经典问题---大整数乘法(1~32位大整数乘法)C++
- 自己对接美团cps,饿了么cps,京东cps的过程,免费领取饿了么红包,分享给大家,程序员自己动手也能赚点!!!
- 2.5G 传输特性分析仪 怎么选 TFN D300S 给您答案
- matlab怎么排列一群变量,添加、删除和重新排列表变量
- SQL2008连接excel2007
- 三星浏览器vr_通过WebVR在浏览器中带来VR体验
- 准确率、精确率、召回率、F1值、ROC/AUC整理笔记
- JumpServer 堡垒机安装笔记
- 计算机出现远程错误怎么解决办法,win7系统远程桌面出现错误0x204的处理方法
- STK地心惯性系(ICRF)与卫星上传感器体坐标系转换