變數就是一個「內容會改變」的數,舉凡文字、數字、布林值 ( 邏輯 )、陣列...等內容格式,都可以是變數所包含的內容。
而要儲存變數,我們當然需要給他一個位置空間嘛,而我們在撰寫程式時,你可以把位置空間視為電腦的記憶體(或稱內存)。
以C語言來說,要宣告一個變數儲存資料,我們需要給他一個身分,我們稱其為變數型態或者資料型態,而每個資料型態給你的空間各不相同,如下圖所示。
不過我們也不用死記硬背,你大概了解就好,大不了就回來查。
好,這邊我們撰寫一個 C 程式,如下所示:(可以在你喜歡的環境運行程式碼,現在就連網路上都有線上編譯器給你直接運行程式碼,非常方便)
#include <stdio.h>
int main() {
// 變數宣告
int age = 20; // 整數變數,用於儲存年齡
float height = 175.5f; // 浮點數變數,用於儲存身高(公分)
char grade = 'A'; // 字元變數,用於儲存等級
char name[] = "John"; // 字串變數,用於儲存名字
// 常數宣告
const double PI = 3.14159; // 常數,用於儲存圓周率
const int DAYS_IN_YEAR = 365; // 常數,用於儲存一年中的天數
// 輸出變數與常數
// 文字後接變數格式,就能輸出: 名字:John
// 另外"\n"代表空一行,是一個控制符號,即下次輸出會換到第二行做輸出
// 以下是要輸出變數的基本格式,也就是 printf()。
printf("名字: %s\n", name);
printf("年齡: %d\n", age);
printf("身高: %.1f cm\n", height);
printf("成績: %c\n", grade);
printf("圓周率: %.5f\n", PI);
printf("一年有 %d 天\n", DAYS_IN_YEAR);
return 0;
}
有一些值得一提的觀念:
#include <stdio.h>
這行程式碼的作用是 引入標準輸入輸出函式庫 (stdio.h
),讓我們可以使用 printf()
這類函式來顯示訊息。main()
函式開始執行,{}
內的程式碼是主要內容。//
是單行註解的意思,也就是電腦不會理會這些東西,註解可以幫我們理解程式碼的運作。(/* */
是多行註解);
代表語句的結束,要記得添加!double
型別,加上f代表175.5這個數字為float
型別,注意,我們討論的是175.5這個數字本身。讀者可以把這個觀念記住。"John"
:這是一個字串,C 語言中的字串是以 NULL 結尾的字元陣列,即自動補上'\0'
。所以字串的內部結構實際上是:'J'
, 'o'
, 'h'
, 'n'
, '\0'
('\0'
是字串結束標記)。總共佔5個字元的記憶體空間。printf()
內,% 符號用來代表變數的類型:return 0;
代表程式執行成功,如果沒有特別的錯誤,main()
會順利結束。以上就是目前讀者需要掌握的細節觀念。
當超出範圍時,數值會「環繞」到另一端。將它想像成一個環形變化。
範例:
#include <stdio.h>
int main() {
char c = 127; // 有號 char,最大值為 127
c = c + 1; // 超出範圍
printf("%d\n", c); // 輸出: -128(環繞到最小值即-128)
return 0;
}
//其餘以此類推: 129對應到-127...c=255時,c會變成-1,c=256時,輸出為0,c=257時,輸出為1
無號數也是同樣道理(unsigned):
#include <stdio.h>
int main() {
unsigned char c = 255; // 無號 char,最大值為 255
c = c + 1; // 超出範圍
printf("%u\n", c); // 輸出: 0(環繞到起點)
return 0;
}
//其餘以此類推: 257對應到1...c=255+256時,輸出255,接下來c=255+257時,輸出又變回0