C 語言變數宣告與資料型態
在程式設計中,變數 (Variable) 就像是一個用來裝資料的盒子。要使用這個盒子,我們必須先告訴電腦這個盒子要裝什麼類型的東西,這就是資料型態 (Data Type)。
變數宣告 (Declaration)
在 C 語言中使用變數之前,必須先宣告它。宣告的格式如下:
資料型態 變數名稱;
例如:
int age; // 宣告一個整數變數叫做 age
float weight; // 宣告一個浮點數變數叫做 weight
char grade; // 宣告一個字元變數叫做 grade
變數初始化 (Initialization)
宣告變數的同時,我們可以給它一個初始值:
int age = 18;
float weight = 65.5;
char grade = 'A';
基本資料型態 (Basic Data Types)
C 語言中最常用的幾種基本資料型態如下:
| 型態 | 關鍵字 | 說明 | 佔用空間 (Bytes) | 格式化符號 |
|---|---|---|---|---|
| 整數 | int | 用於儲存整數 (如 10, -5, 42) | 4 | %d |
| 浮點數 | float | 單倍精確度浮點數 (如 3.14) | 4 | %f |
| 雙倍精確度 | double | 雙倍精確度浮點數,更精準 | 8 | %lf |
| 字元 | char | 用於儲存單個字元 (如 'A') | 1 | %c |
註:記憶體佔用空間會依據編譯器和作業系統架構而略有不同,上表是以常見的 32/64 位元系統為例。
格式化輸出與輸入 (printf & scanf)
要顯示變數的內容,我們需要配合 printf 的格式化符號 (Format Specifier)。
#include <stdio.h>
int main() {
int id = 101;
float score = 89.5;
char group = 'B';
// %d 對應 int, %f 對應 float, %c 對應 char
printf("ID: %d\n", id);
printf("Score: %f\n", score);
printf("Group: %c\n", group);
// 控制浮點數位數:%.2f 代表顯示到小數點後兩位
printf("Score (Fixed): %.2f\n", score);
return 0;
}
使用 scanf 讀取輸入
scanf 函式用來讀取使用者的輸入。要注意的是,變數前面必須加上 & 符號(除了字串陣列外),代表取址 (Attributes),告訴 scanf 把資料存那個記憶體位址。
#include <stdio.h>
int main() {
int num;
printf("請輸入一個整數: ");
// 注意 num 前面有 &
scanf("%d", &num);
printf("你輸入的數字是: %d\n", num);
return 0;
}
常數 (Constants)
如果我們希望一個變數的值在設定後就不能被改變,可以使用 const 關鍵字。
const float PI = 3.14159;
// PI = 3.14; // 這行會導致編譯錯誤,因為 PI 是常數
型態轉換 (Type Casting)
有時候我們需要將一種型態轉換成另一種。
自動轉型 (Implicit Conversion)
當把一個小範圍的型態放入大範圍型態時,會自動轉換。
int a = 10;
double b = a; // 自動將 int 10 轉為 double 10.0
強制轉型 (Explicit Conversion)
要在數值前加上 (型態) 來強制轉換。這在整數除法時特別重要。
int a = 5;
int b = 2;
// 整數除整數結果還是整數 (5/2 = 2)
float result1 = a / b;
// 將其中一個強制轉為 float,結果會是浮點數 (5.0/2 = 2.5)
float result2 = (float)a / b;
printf("Result1: %f\n", result1); // 輸出 2.000000
printf("Result2: %f\n", result2); // 輸出 2.500000