1>. 在寫程式時注意"無符號型別"的使用, 各種型別邊界值的情況.
如:a> 當某個資料不可能為負數時我們一定要考慮用以下型別:
unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsigned long int,
b> 當有些資料你不知道是正負時一定不要用"a>"中的型別, 不然他永遠也不可能為負.
c> 資料的邊界值要多注意, 如:
uint32_t a, b, c;
uint64_t m;
m = a * b + c;
在該運算中可能出現錯誤, "a*b"的型別可能超過uint32_t的最大值,這時一定不要忘了型別轉換.
m = ((uint64_t)a) * b + c;
2>. 在適當的時候要會自我定義資料型別.
我們都知道linux c開發中的常見擴充套件資料型別的定義有:uint8_t, uint16_t, uint32_t, uint64_t, size_t, ssize_t, off_t .... 他之所以要自己定義出資料型別是有道理的, 如: typdef unsigned int uint32_t; 表示uint32_t為32位無符號型別資料, 其實size_t也是32位無符號資料型別,為什麼不直接寫"unsigned int"呢?
為了程式的可擴充套件性, 假如將來我們需要的資料大小變成了64bit時,我們只需要將typedef long long size_t就可以了, 不然我們可要修改好多好多的地方了.這種設計我們同樣可以應用到自己的開發中來,當自己設計乙個int型別儲存某種資料時,但你又沒把握將來是不是要用long int時你可以引用乙個自己定義的資料型別的啊!
stdint.h
-----------------------------
typedef unsigned int uint32_t;
uint32_t.c
-----------------------------
#include
#if 0
#include // uint32_t
#endif
typedef unsigned int uint32_t;
typedef
unsigned
long long uint64_t;
int main()
a = c
sizeof(a) = 4
b = c
sizeof(b) = 8
資料型別 uint32 t 型別
整型的每一種都有無符號 unsigned 和有符號 signed 兩種型別 float和double總是帶符號的 在預設情況下宣告的整型變數都是有符號的型別 char有點特別 如果需宣告無符號型別的話就需要在型別前加上unsigned。無符號版本和有符號版本的區別就是無符號型別能儲存2倍於有符號型別...
取uint32 t每個位元組的資料
該文中描述了通過位運算的方式來獲取int資料的各個位的內容。本文通過unsigned char 的方式獲取每個位元組 uint32 t num 3232299786 0xc0a8fb0a uchar pt uchar printf 02x n pt 0 0xff 不進行 運算也可以 注意 要進行強制...
uint8 t是什麼資料型別
在nesc的 中,你會看到很多你不認識的資料型別,比如uint8 t等。咋一看,好像是個新的資料型別,不過c語言 nesc是c的擴充套件 裡面好像沒有這種資料型別啊!怎麼又是u又是 t的?很多人有這樣的疑問。論壇上就有人問 以 t結尾的型別是不是都是long型的?在baidu上查一下,才找到答案,這...