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

C語言整型數據完整教程:常量表示、變量分類、存儲與溢出

     編輯:關於C語言

整型是 C 語言最基礎、使用最頻繁的數據類型。本文系統整理整型常量的多進制表示、變量分類與內存佈局、補碼存儲機制、定義規則與溢出行為,建立扎實的類型系統認知。

一、整型常量的多進制表示

進制前綴合法數碼範例(十進制值)非法範例
十進制無0-9237, -568, 65535023(前導0), 23D(非十進制碼)
八進制00-7015(13), 0177777(65535)256(無前綴), 03A2, -0127
十六進制0x/0X0-9, A-F/a-f0x2A(42), 0xFFFF(65535)5A(無前綴), 0x3H

後綴:擴展範圍與屬性

  • L/l:長整型(4 字節),如 158L、0x10000L(65536)。
  • U/u:無符號型,如 358u、0x38Au。
  • 可組合:0xA5Lu 表十六進制無符號長整數 165。

關鍵差異: 158(基本整型,2 字節)vs 158L(長整型,4 字節),數值相同但佔用空間與運算提升規則不同。

二、整型變量在內存中的存放:補碼機制

內存佈局

  • 正數: 補碼 = 原碼。
  • 負數: 絕對值二進制 → 按位取反 → +1。

例:-10 的補碼(16 位)

+10: 0000 0000 0000 1010
取反: 1111 1111 1111 0101
+1:  1111 1111 1111 0110  → 0xFFF6

補碼計算

最高位為符號位:0 正、1 負。

三、整型變量分類與範圍(16 位機為例)

類型說明符別名字節數範圍
int基本型2-32,768 ~ 32,767
short int / short短整型2-32,768 ~ 32,767
long int / long長整型4-2,147,483,648 ~ 2,147,483,647
unsigned int / unsigned無符號基本型20 ~ 65,535
unsigned short無符號短整型20 ~ 65,535
unsigned long無符號長整型40 ~ 4,294,967,295

類型對照

四、變量定義語法與規範

type name1, name2, ...;

範例

int a, b, c;
long x, y;
unsigned p, q;

三大規範

  1. 一行可定義多個同類型變數,逗號分隔。
  2. 最後必須以分號結尾。
  3. 定義必須先於使用,通常置於函式開頭。

五、實戰範例

範例 3-2:基本運算

main() {
    int a=12, b=-24, c, d;
    unsigned u=10;
    c = a + u;  // 22
    d = b + u;  // -14 (有符號運算)
    printf("a+u=%d, b+u=%d\n", c, d);
}

範例 3-3:溢出演示

main() {
    int a = 32767, b;
    b = a + 1;  // -32768 (溢出環繞)
    printf("%d, %d\n", a, b);
}

溢出示意

範例 3-4:混合類型運算與自動轉換

main() {
    long x=5, y=6;
    int a=7, b=8, c, d;
    c = x + a;  // long + int → long 結果,再截斷賦給 int
    d = y + b;
    printf("c=%d, d=%d\n", c, d);  // 12, 14
}

不同類型運算時,編譯器自動按「整型提升 → 算術轉換」規則處理,結果類型為較高者,賦值時再截斷/擴展。

總結

掌握進制前後綴、補碼存儲、類型範圍與字節數、定義規範、溢出環繞行為與混合運算自動轉換,是寫出正確、可移植 C 程式的基石。現代系統多為 32/64 位,int 通常 4 字節,但標準僅保證 short ≤ int ≤ long,跨平台代碼應使用 stdint.h 定寬類型(int32_t 等)。

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