前言
一、人物簡介
- 第一位閃亮登場,有請今後會一直教我們C語言的老師 —— 自在。
- 第二位上場的是和我們一起學習的小白程式猿 —— 逍遙。
二、基本資料型別
1、整型
C語言中的整型資料如下表所示:
資料型別 | 含義 | 長度(位元組) | 取值範圍(有符號) | 取值範圍(無符號) |
---|---|---|---|---|
short | 短整型 | 2 | [ -$2^{15}$ , $2^{15}$-1 ] | [ 0 , $2^{16}$-1 ] |
int | 整型 | 4 | [ -$2^{31}$ , $2^{31}$-1 ] | [ 0 , $2^{32}$-1 ] |
long | 長整型 | 4或8 | ||
long long | 長長整型 | 8 | [ -$2^{63}$ , $2^{63}$-1 ] | [ 0 , $2^{64}$-1 ] |
-
整型資料可以是有符號的,也可以是無符號的。
-
有符號的整型可以表示負數和正數,而無符號的整型只能表示非負整數。
2、浮點型
浮點型用於表示實數,它分為單精度浮點型(float)和雙精度浮點型(double)。單精度浮點型佔用4個位元組,雙精度浮點型佔用8個位元組。它們的取值範圍和精度如下表所示:
資料型別 | 長度(位元組) | 取值範圍 | 精度 |
---|---|---|---|
float | 4 | 1.2E-38 ~ 3.4E38 | 約6位小數 |
double | 8 | 2.2E-308 ~ 1.8E308(15位有效數字) | 約15位小數 |
? 浮點型資料在計算機內部以二進位制形式儲存,因此可能會存在精度問題。在進行浮點型資料的比較時,應該使用適當的誤差範圍進行比較。
3、字元型
字元型用於表示單個字元,它佔用1個位元組。
資料型別 | 含義 | 長度(位元組) | 取值範圍(有符號) | 取值範圍(無符號) |
---|---|---|---|---|
char | 字元型 | 1 | [ -$2^7$ , $2^7$-1 ] | [ 0 , $2^8$-1 ] |
字元型資料可以作為單個字元使用,也可以作為整型資料使用,表示該字元在ASCII碼錶中的對應數值。
4、布林型
布林型(bool)用於表示真假值,它只有兩個取值:true和false。
在C語言中,布林型資料被定義為一個整型資料型別,0表示false,非0表示true。
三、變數
1、變數的定義和宣告
在C語言中,變數必須先被定義或宣告才能使用。定義一個變數意味著為它分配記憶體,宣告一個變數意味著告訴編譯器這個變數的型別和名稱。
- 變數的定義格式如下:
type variable_name;
其中,type是變數的資料型別,variable_name是變數的名稱。例如:
int apple;
short i = 5;
float voltage;
- 變數的宣告有兩種情況:
1️⃣一種是需要建立儲存空間的。例如:int apple 在宣告的時候就已經建立了儲存空間。
2️⃣另一種是不需要建立儲存空間的,透過使用extern關鍵字宣告變數名而不定義它。 例如:extern int apple, 其中變數 apple 可以在別的檔案中定義。
extern int apple; //宣告,不是定義
int students; //宣告,也是定義
? 一般來講,除非有extern關鍵字,否則都是變數的定義
2、變數型別
在C語言中,變數的型別指的是變數所儲存的資料型別。我們前面介紹的基本資料型別,都可以作為變數的型別。
- int:整型,用於儲存整數。
- long: 長整型,用於儲存更大的整數。
- float:單精度浮點型,用於儲存浮點數。
- double:雙精度浮點型,用於儲存更大的浮點數。
- char:字元型,用於儲存字元。
- bool:布林型,用於儲存布林值。
C語言還提供了一些複合資料型別,如結構體、聯合體和列舉等,這些符合資料型別,我們在以後的文章中再介紹。
3、變數命名規則
-
變數名可以由字母、數字和下劃線組成,但必須以字母或下劃線開頭。
-
變數名不能使用關鍵字作為名稱,變數名的長度沒有限制,但建議使用有意義的名稱。
✔️ 正確的變數命名
int _gCount = 1;
int m_Age = 18;
long time2 = 20;
❌ 錯誤的變數命名
int 1round = 0; //不能以數字開頭
int case = 1; //不能以關鍵字作為變數名
int %age = 16; //不能用標點符號
int name age = 18; //不能用空格
4、變數的初始化和賦值
- 在C語言中,可以使用賦值運算子(=)將一個值賦給一個變數。
例如,下面的程式碼將值20賦給變數num:
int num;
num = 20;
- 變數的初始化是指在宣告變數時將其賦初值。
例如,下面的程式碼宣告並初始化了一個名為num的整數變數:
int num = 10;
5、變數作用域
在C語言中,變數的作用域指的是變數在程式中可見的範圍。變數可以在函式內部或外部定義。
- 在函式內部定義的變數稱為區域性變數,只在該函式中可見。
#include <stdio.h>
void print_local_num() {
int local_num = 20; // 區域性變數
printf("local_num = %d\n", local_num);
}
int main()
{
print_local_num(); // 輸出 local_num = 20
return 0;
}
- 在函式外部定義的變數稱為全域性變數,可以在整個程式中使用。
#include <stdio.h>
int global_num = 10; // 全域性變數
void print_global_num() {
printf("global_num = %d\n", global_num);
}
int main() {
print_global_num(); // 輸出 global_num = 10
return 0;
}
6、變數儲存型別
在C語言中,變數的儲存型別指的是變數所儲存的位置。C語言中的儲存型別包括自動、靜態、暫存器和外部等。
- 自動變數:自動變數在函式內部宣告,在函式執行時被建立,在函式結束時被銷燬。
- 靜態變數:靜態變數在函式內部或函式外部宣告,它們在程式開始執行時被建立,在程式結束時被銷燬。
- 暫存器變數:暫存器變數是指被儲存在CPU暫存器中的變數,它們通常用於在計算密集型的程式碼中提高效能。
- 外部變數:外部變數是在程式檔案外部宣告的全域性變數,可以被程式的所有檔案訪問。
?自動變數的預設儲存類別為auto。例如,下面的程式碼定義了一個自動變數num:
#include <stdio.h>
void print_num() {
auto int num = 30;
printf("num = %d\n", num);
}
int main() {
print_num(); // 輸出 num = 30
return 0;
}
?靜態變數預設儲存類別為static,在程式執行期間始終存在,它的值在函式呼叫之間保持不變。例如,下面的程式碼定義了一個靜態變數static_num:
#include <stdio.h>
void print_static_num() {
static int static_num = 40;
printf("static_num = %d\n", static_num);
static_num++;
}
int main() {
print_static_num(); // 輸出 static_num = 40
print_static_num(); // 輸出 static_num = 41
print_static_num(); // 輸出 static_num = 42
return 0;
}
?暫存器變數的預設儲存類別為register。例如,下面的程式碼定義了一個暫存器變數reg_num:
#include <stdio.h>
void print_reg_num() {
register int reg_num = 50;
printf("reg_num = %d\n", reg_num);
}
int main() {
print_reg_num(); // 輸出 reg_num = 50
return 0;
}
?外部變數的預設儲存類別為extern。例如,下面的程式碼定義了一個外部變數extern_num,並在另一個檔案中訪問它:
// other_file.c
int extern_num = 60;
// main.c
#include <stdio.h>
extern int extern_num;
void print_extern_num() {
printf("extern_num = %d\n", extern_num);
}
int main() {
print_extern_num(); // 輸出 extern_num = 60
return 0;
}
四、常量
在C語言中,常量可以是整數、浮點數、字元或字串。
1、 整數常量
整數常量是指不帶小數部分的數字。在C語言中,整數常量可以用十六進位制、八進位制或十進位制表示。下表列出了不同進位制下整數常量的表示方法:
進位制 | 格式 | 示例 |
---|---|---|
十進位制 | 直接寫數字 | 10, 20, 30 |
八進位制 | 以0開頭 | 012, 034, 076 |
十六進位制 | 以0x或0X開頭 | 0x10, 0x1E, 0xFF |
例如,下面的程式碼定義了三個整數常量:
#include <stdio.h>
int main() {
int decimal_num = 10;
int octal_num = 012;
int hex_num = 0xFF;
printf("decimal_num = %d, octal_num = %d, hex_num = %d\n", decimal_num, octal_num, hex_num);
return 0;
}
輸出結果為:decimal_num = 10, octal_num = 10, hex_num = 255。
2、 浮點數常量
浮點數常量是指帶有小數部分的數字。在C語言中,浮點數常量可以用小數點表示,也可以用科學計數法表示。例如,下面的程式碼定義了兩個浮點數常量:
#include <stdio.h>
int main() {
float float_num = 1.23;
double double_num = 1.23e-5;
printf("float_num = %f, double_num = %f\n", float_num, double_num);
return 0;
}
輸出結果為:float_num = 1.230000, double_num = 0.000012。
3、 字元常量
字元常量是指用單引號括起來的單個字元。例如,下面的程式碼定義了兩個字元常量:
#include <stdio.h>
int main() {
char char_a = 'A';
char char_b = 'B';
printf("char_a = %c, char_b = %c\n", char_a, char_b);
return 0;
}
4、 字串常量
字串常量是指用雙引號括起來的多個字元。在C語言中,字串常量實際上是一個字元陣列,以空字元('\0')結尾。例如,下面的程式碼定義了一個字串常量:
#include <stdio.h>
int main() {
char str[] = "Hello, world!";
printf("%s\n", str);
return 0;
}
輸出結果為:Hello, world!。
小結
透過這篇文章,我們已經學會了C語言中基本的資料型別、變數和常量的使用。繼續加油,你會成為C語言大佬的!