首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言整型數據類型詳解:從基本類型到 C99 擴展

     編輯:關於C語言

整型是 C 語言最基礎的數據類型,但其位寬、範圍、修飾符組合往往讓開發者困惑。本文系統梳理 int、short、long、long long 及其有符號/無符號變體,涵蓋聲明、初始化、常量表示、取值範圍與移植性考量。

一、核心整型類型速覽表

名稱完整聲明縮寫位寬(典型)有符號範圍無符號範圍
整型intint16/32-32,768 ~ 32,767 / -2,147,483,648 ~ 2,147,483,6470 ~ 65,535 / 0 ~ 4,294,967,295
短整型short intshort16-32,768 ~ 32,7670 ~ 65,535
長整型long intlong32/64-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
超長整型long long intlong long64-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8070 ~ 18,446,744,073,709,551,615

註:具體位寬由實現定義,sizeof 運算符可在運行時查詢。

二、四大修飾符與類型組合

short、long、signed、unsigned 可自由組合(C99 新增 long long),產生 12 種標準整型:

short int, long int, long long int,
unsigned int, unsigned long int, unsigned short int, unsigned long long int,
signed int, signed long int, ... // 顯式 signed 僅為文檔化

默認規則: 無 unsigned 即為有符號;int 可省略(如 unsigned long 等同 unsigned long int)。

三、聲明與初始化範例

int sum;
long int population;
unsigned int count;

int width = 150, height = 60; // 同類型多變量聲明並初始化

四、整型常量的三種進制表示

  • 八進制: 前綴 0,如 054、0567
  • 十六進制: 前綴 0x/0X,如 0x3D、0XE0
  • 十進制: 無前綴,如 254、745

長整型後綴: L 或 l(推薦大寫 L 避免與數字 1 混淆),如 245L、7850L。C99 另提供 ULL 等後綴對應 unsigned long long。

五、取值範圍與移植性核心規則

  1. 最小範圍保證: 標準規定 short ≤ int ≤ long ≤ long long,各類型最小位寬分別為 16、16、32、64 位。
  2. 實際位寬: 16 位機常見 int=short=16、long=32;32/64 位機常見 short=16、int=long=32/64、long long=64。
  3. 無符號優勢: 同位寬下無符號類型範圍翻倍(無符號位參與數值表示)。
  4. 運行時查詢: 使用 sizeof(type) * CHAR_BIT 獲取精確位數(CHAR_BIT 通常為 8,定義於 <limits.h>)。
printf("%zu\n", sizeof(int) * 8); // C99 %zu 對應 size_t

六、C99 新增類型與 <stdint.h> 固定寬度類型

為消除移植性疑慮,C99 在 <stdint.h> 提供精確寬度類型:

  • int8_t, int16_t, int32_t, int64_t(精確寬度)
  • int_least8_t, int_fast32_t(最小/最快寬度)
  • intptr_t, uintptr_t(足以容納指針)
  • intmax_t, uintmax_t(最大寬度)

現代項目推薦優先使用固定寬度類型,明確語義並消除平台差異。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved