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