複製鏈接
請複製以下鏈接發送給好友

unsigned int

鎖定
int整型計算機編程語言中的一種基本數據類型,通常反映了所用機器中整數的最自然長度 [1]  。int整型可以劃分為帶符號的(signed)和無符號的(unsigned)兩種,帶符號類型可以表示正數、負數或0,無符號類型則僅能表示大於等於0的值。在默認情況下聲明的整型變量都是有符號的類型,如果需聲明無符號類型的話就需要在類型前加上unsigned關鍵字。 [2] 
中文名
無符號整型 [3] 
外文名
unsigned int [3] 
取值範圍
0~4294967295(32位) [4] 
屬    性
整型數據 [3] 
關聯數據類型
char、short、long、long long [3] 

unsigned intunsigned int數據類型

unsigned int定義

unsigned int是計算機編程語言中一種表示大於等於0的整數類型。 [3] 

unsigned int取值範圍

針對不同的計算機系統,unsigned int類型所佔的比特數不同,它所能表示的數據範圍也不一樣 [2]  。具體的取值範圍如下: [4] 
數據類型
位數
取值範圍
unsigned int
16
0 到 65535
32
0 到 4294967295

unsigned int應用舉例

unsigned int16位系統中的unsigned int

16位系統中一個int能存儲的數據的範圍為:-32768~32767,而unsigned int能存儲的數據範圍則是0~65535。由於在計算機中,整數是以補碼形式存放的。所以如果整數的最高位是1,有符號數的話就是負數;如果是無符號數,則都表示正數。另外,unsigned若省略後一個關鍵字,大多數編譯器都會認為是unsigned int。 [3] 

unsigned intMySQL中的unsigned int

sql語句中,創建一個數據表時: [5] 
CREATE TABLE mysql.ndb_replication  (
    ...
    server_id INT UNSIGNED,
    ...
}
其中的UNSIGNED表示,數據項server_id的數據範圍為0~4294967295。 [6] 

unsigned int注意事項

unsigned int整數溢出

如果整數太大,超出了整數類型的範圍會產生溢出現象。下面分別將有符號整型和無符號整型設置為最大允許值加略大一些的值,觀察溢出現象: [3] 
#include <stdio.h>
int main() {
    int i = 2147483647;
    unsigned int j = 4294967295;
    printf("%d %d %d\n", i, i+1, i+2);
    printf("%u %u %u\n", j, j+1, j+2);
    return 0;
}

//程序執行結果:
2147483647 -2147483648 -2147483647
4294967295 0 1
由以上結果可知,unsigned int溢出後數值回到“起始點”0,而int溢出後數值回到“起始點”-2147483648。應當注意的是,當變量溢出時,系統並沒有給出提示,所以編程時需要程序員自己處理這個問題。 [3] 

unsigned int切勿混用帶符號類型和無符號類型

如果表達式裏既有帶符號類型又有無符號類型,當帶符號類型取值為負時會出現異常結果,這是因為帶符號數會自動地轉換成為無符號數。例如一個形如 a*b 的式子中,如果 a=-1,b=1,而且a,b都是int類型,則表達式的值顯然為-1,然而如果a是int,而b是unsigned int,則結果須視在當前機器上int所佔位數而定,在32位計算機系統中,結果是4294967295。 [2] 
參考資料