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来定义,如:

typedef char bool;

一般来说,一个C的project中一定要做一些这方面的工作,由于你会涉及到跨平台。不同的平台会有不同的字长。所以利用预编译和typedef能够让你最有效的维护你的代码。为了用户的方便。C99标准的C语言硬件为我们定义了这些类型,我们放心使用就能够了。

依照posix标准,一般整形相应的*_t类型为:

1字节     uint8_t

2字节     uint16_t

4字节     uint32_t

8字节     uint64_t

附:C99标准中inttypes.h的内容

00001 /*

00002    inttypes.h

00003 

00004    Contributors:

00005      Createdby Marek Michalkiewicz <marekm@linux.org.pl>

00006 

00007    THISSOFTWARE IS NOT COPYRIGHTED

00008 

00009    Thissource code is offered for use in the public domain.  You may

00010    use,modify or distribute it freely.

00011 

00012    Thiscode is distributed in the hope that it will be useful, but

00013    WITHOUTANY WARRANTY.  ALLWARRANTIES, EXPRESS OR IMPLIED ARE HEREBY

00014    DISCLAIMED.  This includes but is not limited towarranties of

00015    MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE.

00016  */

00017 

00018 #ifndef __INTTYPES_H_

00019 #define __INTTYPES_H_

00020 

00021 /* Use [u]intN_t if you need exactly N bits.

00022    XXX- doesn't handle the -mint8 option.  */

00023 

00024 typedefsigned char int8_t;

00025 typedefunsigned char uint8_t;

00026 

00027 typedefint int16_t;

00028 typedefunsigned int uint16_t;

00029 

00030 typedeflong int32_t;

00031 typedefunsigned long uint32_t;

00032 

00033 typedeflong long int64_t;

00034 typedefunsigned long long uint64_t;

00035 

00036 typedefint16_t intptr_t;

00037 typedefuint16_t uintptr_t;

00038 

00039 #endif

uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结的更多相关文章

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

    转自:http://blog.csdn.net/kiddy19850221/article/details/6655066 uint8_t / uint16_t / uint32_t /uint64_ ...

  2. uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型(转)

    在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看, 好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样 ...

  3. uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型

    在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的 ...

  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

    这些数据类型是 C99 中定义的,它就是一个结构的标注,可理解为type/typedef的缩写,表示通过typedef定义.它们只是使用typedef给类型起的别名 #ifndef _UINT8_T ...

  6. 基本数据类型大总结(int,str,list,dict,tuple)

    python基本数据类型 int==>整数,主要用来进行数学运算 str==>字符串,可以保存单一数值 bool==>判断真假,true,false list==>存储大量数据 ...

  7. java数据类型大转换

    1.字符串类型向整形转换 int age = Integer.parseInt(strAge); 2 int -> String int i=12;String s="";第 ...

  8. uint16_t

    转自:https://blog.csdn.net/kiddy19850221/article/details/6655066 uint8_t / uint16_t / uint32_t /uint64 ...

  9. 线程安全-一个VC下多个网络请求

    一.线程安全变量控制显示隐藏loading框 问题描写叙述: 同一页面有两个异步网络请求,第一个请求開始,loading旋转.第二个请求開始loading旋转.第一个结束,loading停止旋转,但是 ...

随机推荐

  1. 小程序红包开发跳坑记 微信小程序红包接口开发过程中遇到的问题 微信小程序红包开发

    现在做小程序的越来越多,商家推广也是一个瓶颈,谁不发点红包,都很难找到人来用你的微信小程序了.于是不管你开发什么小程序功能,你或多或少都要用到小程序来发红包吧.  我们自己之前做公众号发红包,做了两三 ...

  2. react 基础语法复习1- 搭建开发环境

    之前有看过阮一峰老师的react教程跟着做了一遍,学习了一下.好久没看,有点忘记了,这次跟着脚手架工具系统的复习一遍.顺便学习学习 react-router 和 redux 首先,脚手架工具我使用的是 ...

  3. BZOJ 3538 == 洛谷 P3106 [USACO14OPEN]GPS的决斗Dueling GPS's

    P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 题目描述 Farmer John has recently purchased a new car online, but ...

  4. sql语句like的用法 有些正则表达式可以通过like实现

    原文发布时间为:2010-10-28 -- 来源于本人的百度文章 [由搬家工具导入] 在SQL结构化查询语言中,LIKE语句有着至关重要的作用。LIKE语句的语法格式是:select * from 表 ...

  5. bzoj 1228 [SDOI2009]E&D SG函数打表 找规律

    题目链接 Description 桌子上有2n 堆石子,编号为1..2n.将第2k-1 堆与第2k 堆(1 ≤ k ≤ n)为同一组.第i堆的石子个数用一个正整数Si表示.一次分割操作指的是,从桌子上 ...

  6. android基本控件学习-----Button

    Button讲解: 一.在我们实际的使用button的时候经常会对button不同状态会有不同的显示,在讲解Button前,首先对drawable下面的statelistdrawable的相关知识讲一 ...

  7. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---3

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  8. Git Base 操作(二)

    1. 撤销修改 (1) 当改乱了工作区(working directory)某个文件的内容,想直接丢弃工作区中的修改时,用命令git checkout -- file. (2) 当不但改乱了工作区某个 ...

  9. luogu P1336 最佳课题选择

    题目描述 Matrix67要在下个月交给老师n篇论文,论文的内容可以从m个课题中选择.由于课题数有限,Matrix67不得不重复选择一些课题.完成不同课题的论文所花的时间不同.具体地说,对于某个课题i ...

  10. Ruby on rails初体验(二)

    体验一中添加了一个最基本的支架和一个简单的数据迁移,实现了一个基本的增删改查的功能列表.体验二中要在次功能上继续丰满一下功能.实现如下效果: 在每个公司中都包含有不同的部门,按照体验一中的方法,添加一 ...