| 概念 | 定義 | 決定因素 | 例子 |
|---|---|---|---|
| 類型 | 數據的抽象分類,規定了數據在內存中的存儲方式、佔用字節數、對齊要求、取值範圍、合法運算集合 | 編譯期靜態綁定(C 為靜態類型語言) | int (4字節, -2^31~2^31-1, 支持 + - * / % 等)float (4字節, IEEE754 單精度, 支持浮點運算)struct Node {int id; Node* next;} (自定義聚合類型) |
| 值 | 變量/表達式在運行時具體存儲在內存單元中的位模式,經類型解釋後呈現的語義內容 | 運行期動態賦值 | int a = 42; → 內存中 0x0000002A,類型 int 解釋為十進制 42float f = 3.14f; → 內存中 0x4048F5C3,類型 float 解釋為 3.14 |
int i = 3.14; 中,值 3.14(double 類型)經截斷轉換為 3(int 類型),位模式從 0x40091EB851EB851F 變為 0x00000003,類型改變導致值語義改變。#include <stdio.h>
int main() {
int a = 65; // 類型 int,值 65
char c = a; // 隱式轉換:類型 char,值 'A' (ASCII 65)
float f = a; // 隱式轉換:類型 float,值 65.0f
void *p = &a; // 類型 void*,值為地址 (如 0x7ffd1234)
printf("a=%d, c=%c, f=%f, p=%p\n", a, c, f, p);
// 輸出: a=65, c=A, f=65.000000, p=0x7ffd1234
return 0;
}
類型 = 編譯期契約(存儲規範、操作規則、取值域)
值 = 運行期實例(具體位模式、語義內容)
C 語言通過靜態類型系統在編譯期約束值的合法性,運行時值嚴格遵循類型規範存儲與運算,二者緊密結合又層次分明。