uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t数据类型详解
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型?在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。
那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。
uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。比如C中没有bool,于是在一个软件中,一些程序员使用int,一些程序员使用short,会比较混乱,最好就是用一个typedef来定义,如:
typedefchar bool;
一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。为了用户的方便,C99标准的C语言硬件为我们定义了这些类型,我们放心使用就可以了。 按照posix标准,一般整形对应的*_t类型为:
1字节 uint8_t
2字节 uint16_t
4字节 uint32_t
8字节 uint64_t
这些数据类型是 C99 中定义的,具体定义在:/usr/include/stdint.h ISO C99: 7.18 Integer types
/*There is some amount of overlap with as known by inet code*/#ifndef __int8_t_defined
# define __int8_t_defined
typedef signedcharint8_t;
typedefshort intint16_t;
typedefintint32_t;
#if __WORDSIZE == 64typedeflong intint64_t;
#else__extension__
typedeflong long intint64_t;
# endif#endif
/*Unsigned.*/typedef unsignedcharuint8_t;
typedef unsignedshort intuint16_t;
#ifndef __uint32_t_defined
typedef unsignedintuint32_t;
# define __uint32_t_defined#endif
#if __WORDSIZE == 64 typedef unsignedlong intuint64_t;#else __extension__
typedef unsignedlong long intuint64_t;#endif 注意:
必须小心 uint8_t 类型变量的输出,例如如下代码,会输出什么呢?
uint8_t fieldID= 67;
cerr<< "field=" << fieldID <
结果发现是:field=C 而 不是我们所想的 field=67这是由于:
typedef unsignedcharuint8_t;
uint8_t 实际是一个char, cerr << 会输出 ASCII 码是 67 的字符,而不是 67这个数字.
因此,输出 uint8_t 类型的变量实际输出的是其对应的字符, 而不是真实数字.
若要输出67,则可以这样:
cerr<< "field=" << (uint16_t) fieldID <
结果是:field=67同样: uint8_t 类型变量转化为字符串以及字符串转化为 uint8_t 类型变量都要注意, uint8_t类型变量转化为字符串时得到的会是ASCII码对应的字符, 字符串转化为 uint8_t 变量时, 会将字符串的第一个字符赋值给变量.
例如如下代码:
#include#include#include
using namespacestd;intmain()
{
uint8_t fieldID= 67;//uint8_t --> string
strings;
ostringstream strOStream;
strOStream<
s=strOStream.str();
cerr<< s < uint8_t
s = "65";
stringstream strStream;
strStream<
strStream>>fieldID;
strStream.clear();
cerr<< fieldID <
}
上述代码输出的是:
C6
uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t数据类型详解相关推荐
- Qt总结之十四:uint8_t / uint16_t / uint32_t /uint64_t数据类型详解
一.C++基础数据类型 (一)如下图 C++的主要数据类型,主要分为三类:布尔型,整型(char型从本质上说,也是种整型类型,它是长度为1的整数,通常用来存放字符的ASCII码),浮点型. (二)by ...
- uint8_t / uint16_t / uint32_t /uint64_t 数据类型大总结
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- uint8_t / uint16_t / uint32_t /uint64_t 数据类型集中网上的解释
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型,在嵌入式编程中经常会遇见. 首先 #define uint unsigned int; int和uin ...
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型? 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- C 语言编程 — uint8_t / uint16_t / uint32_t /uint64_t
目录 文章目录 目录 uint8_t\uint_16_t\uint32_t\uint64_t 格式化输出 uint8_t\uint_16_t\uint32_t\uint64_t 在 C99 标准(IS ...
- uint8_t / uint16_t / uint32_t /uint64_t 有什么区别?
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...
- [u]intN_t - uint8_t, uint16_t, uint32_t, uint64_t
uint8_t, uint16_t, uint32_t, uint64_t 在c/c++中,很多以_t结尾的数据类型,如uint8_t,size_t等等,乍一看什么鬼,实际上_t的意思就是typede ...
- uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍
uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型,不过 ...
- SQL Server 2005 常用数据类型详解
SQL Server 2005 常用数据类型详解 [b]1. 字符串数据类型[/b] char 此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定:如未指定,默认为char(1).每个字 ...
最新文章
- SOFAMosn 无损重启/升级
- 科研经费管理新规定——劳务费从15%变为上不封顶
- 生产管理erp系统源码_仁和ERP企业管理系统提高生产管理流程
- spring实现事务原理
- dell r230u盘启动安装2008_dell r230服务器 怎么u盘开启
- 阿里笔试——北京阿里笔试题总结
- 结合模电分析电流源电路(简单晶体管电流源,Howland电流源,压控电流源)
- node 使用 cnpm
- 前端html与css学习笔记总结篇
- 笔记:基于freeradius 3.0的wifi认证
- MySqlDataAdapter.Update -- 报错
- 使用 Python 将 MP4视频 转换为GIF动画
- PSV 黑商店 pkgj 无法刷新列表 显示HttpError 的解决办法
- 数据结构—线性表(第三章)—基本知识点总结
- 财务计算机专业英文怎么说,财务与计算机 英文简历模板
- 大众美团服务链监控CAT
- 京东程序员离职怒删代码被判10个月,京东到家请人花三万恢复!
- 各国际会议的影响因子
- 谷歌地图的使用,包括坐标点的刷新,设置中心点
- 【五面阿里】现在分享一下阿里最全面试88题:阿里巴巴核心技术部、蚂蚁金服、天猫面试题含答案...
热门文章
- 无穷小、梯度向量和泰勒展开
- css 控制自动换行,问题:css 自动换行;结果:CSS控制文本自动换行
- 苹果手机计算机科学,手机科学计算器app_计算器软件应用推荐_iPhone_苹果ios_安卓...
- excel 按列拆分合并 表格操作及脚本
- MATLAB 提取fig文件中数据的通用方法
- 最小二乘法求回归直线方程的详细推导过程
- GitLab关闭注册功能
- HDU5144 NPY and shot BestCoder Round #22 1003
- 如果申论考“冬奥会”,你该怎么写?
- 电脑连接热点无internet访问权限_连接wifi后显示无internet访问权限怎么解决