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数据类型详解相关推荐

  1. Qt总结之十四:uint8_t / uint16_t / uint32_t /uint64_t数据类型详解

    一.C++基础数据类型 (一)如下图 C++的主要数据类型,主要分为三类:布尔型,整型(char型从本质上说,也是种整型类型,它是长度为1的整数,通常用来存放字符的ASCII码),浮点型. (二)by ...

  2. uint8_t / uint16_t / uint32_t /uint64_t 数据类型大总结

    uint8_t / uint16_t / uint32_t /uint64_t  是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...

  3. uint8_t / uint16_t / uint32_t /uint64_t 数据类型集中网上的解释

    uint8_t / uint16_t / uint32_t /uint64_t  是什么数据类型,在嵌入式编程中经常会遇见. 首先 #define uint unsigned int; int和uin ...

  4. uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了

    uint8_t / uint16_t / uint32_t /uint64_t  是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...

  5. uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结

    uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型? 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...

  6. 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 ...

  7. uint8_t / uint16_t / uint32_t /uint64_t  有什么区别?

    uint8_t / uint16_t / uint32_t /uint64_t  是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型 ...

  8. [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 ...

  9. uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍

    uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型,不过 ...

  10. SQL Server 2005 常用数据类型详解

    SQL Server 2005 常用数据类型详解 [b]1. 字符串数据类型[/b] char 此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定:如未指定,默认为char(1).每个字 ...

最新文章

  1. SOFAMosn 无损重启/升级
  2. 科研经费管理新规定——劳务费从15%变为上不封顶
  3. 生产管理erp系统源码_仁和ERP企业管理系统提高生产管理流程
  4. spring实现事务原理
  5. dell r230u盘启动安装2008_dell r230服务器 怎么u盘开启
  6. 阿里笔试——北京阿里笔试题总结
  7. 结合模电分析电流源电路(简单晶体管电流源,Howland电流源,压控电流源)
  8. node 使用 cnpm
  9. 前端html与css学习笔记总结篇
  10. 笔记:基于freeradius 3.0的wifi认证
  11. MySqlDataAdapter.Update -- 报错
  12. 使用 Python 将 MP4视频 转换为GIF动画
  13. PSV 黑商店 pkgj 无法刷新列表 显示HttpError 的解决办法
  14. 数据结构—线性表(第三章)—基本知识点总结
  15. 财务计算机专业英文怎么说,财务与计算机 英文简历模板
  16. 大众美团服务链监控CAT
  17. 京东程序员离职怒删代码被判10个月,京东到家请人花三万恢复!
  18. 各国际会议的影响因子
  19. 谷歌地图的使用,包括坐标点的刷新,设置中心点
  20. 【五面阿里】现在分享一下阿里最全面试88题:阿里巴巴核心技术部、蚂蚁金服、天猫面试题含答案...

热门文章

  1. 无穷小、梯度向量和泰勒展开
  2. css 控制自动换行,问题:css 自动换行;结果:CSS控制文本自动换行
  3. 苹果手机计算机科学,手机科学计算器app_计算器软件应用推荐_iPhone_苹果ios_安卓...
  4. excel 按列拆分合并 表格操作及脚本
  5. MATLAB 提取fig文件中数据的通用方法
  6. 最小二乘法求回归直线方程的详细推导过程
  7. GitLab关闭注册功能
  8. HDU5144 NPY and shot BestCoder Round #22 1003
  9. 如果申论考“冬奥会”,你该怎么写?
  10. 电脑连接热点无internet访问权限_连接wifi后显示无internet访问权限怎么解决