Variables & Memory

變數與記憶體

程式語言一 · 導覽投影片

→ / space 前進  回 Esc 總覽 F 全螢幕
導覽:建框架。完整內容在 PDF,可跑範例在 index。

01變數=有名字的記憶體空間

int age = 20; 一行做三件事:

  • ① 宣告型態 int → 配置 4 bytes
  • ② 給名字 age → 這塊空間的標籤
  • ③ 初始化 = 20 → 把值寫進去

age:20 (4 bytes)

02基本資料型態

型態大小用途
int4 B整數,最常用 ⭐
float4 B浮點,約 7 位有效數字
double8 B浮點,約 15 位,預設選擇 ⭐
char1 B字元(其實是 ASCII 整數)

大小因平台而異,用 sizeof 查實際值。

03整數溢位

int 4 bytes = 32 bits,範圍約 ±21 億(2³¹-1 = 2147483647)。

到最大值再 +1 會繞回最小負數 -2147483648不會 crash 但值錯,是漏洞根源。需要大數用 long long

04浮點精度陷阱

double a = 0.1 + 0.2;   // 實際是 0.30000000000000004
a == 0.3 ?  // 假!

浮點別用 == 比較,用容差:fabs(a - 0.3) < 1e-9。這是 IEEE 754 通病(Python/Java 也一樣)。

05char 其實是整數

char 存 ASCII 整數:'A'=65、'0'=48。所以能算術:

  • 'A' + 1 = 'B''a' - 32 = 'A'
  • c - '0' 把數字字元轉成整數

'0'(字元 48)和 0(整數)完全不同。

06永遠初始化 · 常數

永遠初始化變數int x; 是垃圾值、用它是未定義行為(UB),C 最常見 bug 之一。寫 int x = 0;

常數優先用 const(有型態檢查)勝過 #define(純文字替換)。

next

接著動手

PDF 講義index 跑 sizeof/char 算術/溢位/浮點精度 → 本地練習 5 題 → Quizlet + 測驗卷 ≥ 90%。