博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型?
阅读量:6197 次
发布时间:2019-06-21

本文共 2010 字,大约阅读时间需要 6 分钟。

转自http://blog.csdn.net/zklth/article/details/7978362

uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型?这些数据类型是 C99 中定义的,具体定义在:/usr/include/stdint.h ISO C99: 7.18 Integer types <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

格式化输出:

unit64_t %llu
unit32_t %u
unit16_t %hu

注意:

必须小心 uint8_t 类型变量的输出,例如如下代码,会输出什么呢?

uint8_t fieldID = 67;

cerr<< "field=" << fieldID <<endl;
结果发现是:field=C 而 不是我们所想的 field=67

这是由于 typedef unsigned char uint8_t;

uint8_t 实际是一个 char, cerr << 会输出 ASCII 码是 67 的字符,而不是 67 这个数字.

因此,输出 uint8_t 类型的变量实际输出的是其对应的字符, 而不是真实数字.

若要输出 67,则可以这样:

cerr<< "field=" << (uint16_t) fieldID <<endl;

结果是:field=67

同样: uint8_t 类型变量转化为字符串以及字符串转化为 uint8_t 类型变量都要注意, uint8_t类型变量转化为字符串时得到的会是ASCII码对应的字符, 字符串转化为 uint8_t 变量时, 会将字符串的第一个字符赋值给变量.

例如如下代码:

#include 
#include
#include
using namespace std; int main() { uint8_t fieldID = 67; // uint8_t --> string string s; ostringstream strOStream; strOStream << fieldID; s = strOStream.str(); cerr << s << endl; // string --> uint8_t s = "65"; stringstream strStream; strStream << s; strStream >> fieldID; strStream.clear(); cerr << fieldID << endl; }

上述代码输出的是:

C
6

转载于:https://www.cnblogs.com/WArobot/p/6691545.html

你可能感兴趣的文章
Linux系统被入侵后处理方式介绍
查看>>
使用图神经网络(GNN)寻找最短路径
查看>>
ArrayList 源码阅读记录
查看>>
支付宝工程师创造出了一个可以“拷贝”支付宝的神器 ...
查看>>
使用JSDoc提高代码的可读性
查看>>
互联网行业高弹性系统构建最佳实践
查看>>
基于 three.js 的 3D 粒子动效实现
查看>>
flink1.7.2 tableapi批处理示例
查看>>
公司网站被黑 跳转到彩票网站的处理解决办法
查看>>
正则表达式 命名捕获组
查看>>
天际汽车牛胜福:受感知系统等影响 点对点L3将于五年后实现
查看>>
mysql备份与恢复
查看>>
TensorFlow on Kubernetes性能瓶颈定位
查看>>
iOS实现Crash捕获与堆栈符号化
查看>>
最全React技术栈技术资料汇总(收藏)
查看>>
k8s与CICD--利用helm部署应用到kubernetes
查看>>
阿里云图数据库GraphDB上线,助力图数据处理
查看>>
阿里云MVP:开发者的超能力,用技术创造更好世界
查看>>
不要争了!技术选择没那么重要
查看>>
如何提高SEO页面与用户检索的相关性?
查看>>