1. 程式人生 > >uint8_t / uint16_t / uint32_t /uint64_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來定義,如:
typedef char bool;

一般來說,一個C的工程中一定要做一些這方面的工作,因為你會涉及到跨平臺,不同的平臺會有不同的字長,所以利用預編譯和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


相關推薦

uint8_t / uint16_t / uint32_t /uint64_t資料型別詳解

uint8_t / uint16_t / uint32_t /uint64_t 是什麼資料型別? 在nesc的程式碼中,你會看到很多你不認識的資料型別,比如uint8_t等。咋一看,好像是個新的資料型別,不過C語言(nesc是C的擴充套件)裡面好像沒有這種資料型別啊!怎麼又是u又是_t的

Qt總結之十四:uint8_t / uint16_t / uint32_t /uint64_t資料型別詳解

一、C++基礎資料型別 (一)如下圖 C++的主要資料型別,主要分為三類:布林型,整型(char型從本質上說,也是種整型型別,它是長度為1的整數,通常用來存放字元的ASCII碼),浮點型。 (二)byte(位元組)和bit(位) 普及如下: byte為位元組,bit為位

uint8_t / uint16_t / uint32_t /uint64_t 是什麼資料型別

它就是一個結構的標註,可以理解為type/typedef的縮寫,表示它是通過typedef定義的,而不是其它資料型別。 uint8_t,uint16_t,uint32_t等都不是什麼新的資料型別,它們只是使用typedef給型別起的別名,新瓶裝老酒的把戲。不過,不要小看了t

uint8_t / uint16_t / uint32_t /uint64_t 是什麼資料型別

uint8_t / uint16_t / uint32_t /uint64_t  是什麼資料型別 在nesc的程式碼中,你會看到很多你不認識的資料型別,比如uint8_t等。咋一看,好像是個新的資料型別,不過C語言(nesc是C的擴充套件)裡面好像沒有這種資料型別啊!怎麼

uint8_t / uint16_t / uint32_t /uint64_t數據類型詳解

space size 註意 posix clear 跨平臺 usr ascii 編譯 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、uint_fast16_t之類的關鍵字定義一些整型變數,但是具體表示什麼意思,並不是太清楚,只是把它當成int之類的整型變數定義關鍵字。在自己理解他們之前,先寫一下在網上搜到的常見的

淺析C語言之uint8_t / uint16_t / uint32_t /uint64_t

一、C語言基本資料型別回顧 在C語言中有6種基本資料型別:short、int、long、float、double、char 1、數值型別 1)整型:short、int、long 2)浮點型:float、double 2、字元型別:char 二、typedef回顧

uint8_t C語言中的資料型別解釋

C語言中好像沒有這種資料型別,但是在實際應用的過程中,發現許多人的程式碼中都存在這種表示方式。其實uintX-t就是通過typedef定義的,利用預編譯和typedef可提高效率也方便程式碼移植。總結如下: typedef unsigned char   uint8_t

c理解提高(1)資料型別的本質分析

資料型別本質分析 資料型別概念 “型別”是對資料的抽象  型別相同的資料有相同的表示形式、儲存格式以及相關的操作  程式中使用的所有資料都必定屬於某一種資料型別   資料型別的本質思考  思考資料型別和

Java中8種基本資料型別及其預設值

Java語言中有8種基本資料型別,基本情況彙總如下: Java中8種基本資料型別總結 序號 資料型別 大小/位 封裝類 預設值 可表示資料

JAVA面試知識點總結--資料型別

一、資料型別 基本資料型別 數值型別: 運算and型別轉換 自動裝拆箱and比較 bool

redis安裝及其資料型別簡介

Windows下安裝 redis的安裝十分簡單,首先從github上下載安裝包,地址:下載地址 下載完成後解壓到c盤,為了方便操作可以將解壓後的檔案重新命名為“redis”,然後開啟一個cmd 視窗使用cd命令切換目錄到 C:\redis 之後輸入redis-server.ex

包裝類(Integer/Boolean等、字串與基本資料型別轉化,-127-128自動裝箱入池)

為什麼要有包裝類? Object類可以接收所有引用資料型別。然而在Java中,資料型別分為基本資料型別和引用資料型別,那麼基本資料型別如何處理呢? 使用包裝類 :包裝類是將基本資料型別封裝到類中,因為Object無法接受基本資料型別,封裝成類後就可以用Object類來接收。 簡單定義一個in

Object類(覆寫toString/equals/接收引用資料型別

什麼是Objetc類? Object是JAVA預設提供的類。 在Java中除了Object類,所有的類都有繼承關係,預設會繼承Object父類,所有類物件都可以通過Object類進行接收,即向上轉型。 ////Object可以接收任何類 class A{} class B{} publi

Java初認識--基本資料型別(int 和byte之間賦值)預設值 型別強轉

主類和主方法 Test.java–是原始檔,原始檔必須與主類名(public class )保持一致,一個原始檔只能有一個主類 ,主方法存在與主類中。 Test.java 原始檔 主類:public class Test 主方法 : public static void main(Strin

JS中資料型別的分類

JS中資料型別的分類: (1).基本資料型別: 1.數字(number) 2.字串(string) 3.布林(boolean) 4.null 5.undefined (2).引用資料型別: 1.物件資料型別(object) 2.函式資料型別(function)

萬惡之源 - Python基礎資料型別

字典   字典的簡單介紹   字典(dict)是python中唯⼀的⼀個對映型別.他是以{ }括起來的鍵值對組成.   在dict中key是 唯⼀的.在儲存的時候, 根據key來計算出⼀個記憶體地址. 然後將key-value儲存在這個地址中.   這種演算法被稱為hash演算法, 所以, 切記, 在

四、資料庫之資料型別

  首先補充點了解的小知識; select * from mysql.user #顯示出來亂了 select * from mysql.user\G #加了\G後一行一行顯示了 一、資料型別:分不同種類去存不同型別的資料 儲存引

深入瞭解以太坊虛擬機器第2部分——固定長度資料型別的表示方法

在本系列的第一篇文章中,我們已經看到了一個簡單的Solidity合約的彙編程式碼: contract C { uint256 a; function C() { a = 1; } } 該合約歸結於sstore指令的呼叫: // a = 1 sstore(0x0,

js的本質/資料型別

js的本質就是處理資料,資料來自於後臺的資料庫 所以變數就起到了一個臨時儲存資料的作用。 ECMAScript制定了js的資料型別 資料型別 string,number,boolean,null,undefined,object是基本資料型別 基本資料型別就是簡單的賦值 function obje