在 16 位元系統中,int 佔 2 個位元組(16 bits),若為有號整數,其範圍為 -32,768 ~ 32,767;而 unsigned int(或簡稱 unsigned)同樣佔 16 bits,但將最高位視為數值位而非符號位,範圍擴展為 0 ~ 65,535。
計算機以補碼儲存整數。對於相同的位元模式:
0xFFFF = -1)0xFFFF = 65,535)因此,unsigned 並非增加儲存空間,而是改變了對位元模式的「解讀規則」。
單獨寫 unsigned 時,絕大多數編譯器預視為 unsigned int。同理,unsigned short、unsigned long、unsigned long long 皆遵循此規則。
-1 > 0u 為真)size_t(本質為無號)而非 intunsigned 應用 %u、%lu、%llu 等格式字串理解補碼與無符號表示的本質差異,是避開 C 語言整數陷阱的關鍵。