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

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 <[email protected]>

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

时间: 2024-10-22 16:27:33

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

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

转自:http://blog.csdn.net/kiddy19850221/article/details/6655066 uint8_t / uint16_t / uint32_t /uint64_t  是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问.论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上

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

在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看, 好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问.论坛上就有人问: 以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少. 那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近.它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typ

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

来自:http://blog.chinaunix.net/uid-26921272-id-3196742.html 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等. 咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问.论坛上就有人 问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少. 那么_t的意思到底表示什么?具体的官方答案没有

线程安全变量控制显示隐藏loading框

一.线程安全变量控制显示隐藏loading框 问题描述: 同一页面有两个异步网络请求,第一个请求开始,loading旋转,第二个请求开始loading旋转,第一个结束,loading停止旋转,可是这时第二个请求还没有结束,然后loading就结束了,于是问题就来了. 解决方案: 二.由上面问题引申出的问题: 1. #import <libkern/OSAtomic.h> 这段话是从网上copy过来的,总结了一下原子操作的作用.但是文中提到的osbase.h文件找不到.可能是因为版本升级我的li

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

一.线程安全变量控制显示隐藏loading框 问题描写叙述: 同一页面有两个异步网络请求,第一个请求開始,loading旋转.第二个请求開始loading旋转.第一个结束,loading停止旋转,但是这时第二个请求还没有结束.然后loading就结束了,于是问题就来了. 解决方式: 二.由上面问题引申出的问题: 1. #import <libkern/OSAtomic.h> 这段话是从网上copy过来的.总结了一下原子操作的作用. 可是文中提到的osbase.h文件找不到.可能是由于版本号升级

数据类型 -- uint32_t 类型

整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned.无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535.由于在计算机中,整数是以补码形式存放的.根据最高位的不同

Savelog项目总结回忆

Savelog项目的细节已经不太记得,感觉有些遥远,需要翻回旧的笔记本电脑或者是旧的笔记本. 概述: 本项目采用的Linux C,监听一个或多个特殊的端口,当其中一个端口有发起连接时就产生一个新的线程,并将端口发来的数据进行检验,然后保存到日志,日志只保留最近7天的内容,连接的端口会不断的发送数据,大概每秒钟发送一个,发送成功或失败都要写入日志,成功用info标签,记录端口号,IP等,失败根据失败的内容检查,并给出相应的原因. 下面讲一些笔记记下来,是从刚开始学Linux开始的那段. 杂锦: l

C语言记录汇总

uint32_t     转载自:http://blog.sina.com.cn/s/blog_6aea878e0100tl0f.html体会1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况.    如:   a> 当某个数据不可能为负数时我们一定要考虑用以下类型:      unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsignedlong int,   b> 当有些数据你不知

【AFL(七)】afl-fuzz.c小改——输出文件夹暂存

前言: 之前已经写过两篇针对tmin.cmin的修改,现在再改afl-fuzz.c已经轻车熟路了,对整个afl的源码结构也比较了解了. afl-tmin:https://www.cnblogs.com/wayne-tao/p/11964565.html afl-cmin:https://www.cnblogs.com/wayne-tao/p/11971922.html 此番修改是因为,对AFL关于 out_dir 文件夹的细节处理不是很满意,AFL对 out_dir 的处理是这样的: 检测 ou