免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

uint8_t / uint16_t / uint32_t /uint64_t 的簡單介紹

uint8_t / uint16_t / uint32_t /uint64_t 的簡單介紹
http://www.cnblogs.com/kungfupan ... /02/06/2907665.html
在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語言硬體為我們定義了這些類型,我們放心使用就可以了。
https://ccckmit.gitbooks.io/lowlevelc/content/header.html
1999 年的 C99 的標準在 <stdint.h> 當中定義了下列型態,提供了更簡短明確的整數型態:
有號型態                       無號型態                     長度
int8_t                       uint8_t                      8位元
int16_t                       uint16_t                     16位元
int32_t                       uint32_t                     32位元
int64_t                       uint64_t                     64位元
返回列表