目錄
一、變量與數據類型概述
1.1 什么是變量?
1.2 數據類型分類
二、基本數據類型詳解
2.1 整型(int, short, long)
2.1.1 常見整型類型
2.1.2 代碼示例
2.1.3 注意事項
2.2 浮點型(float, double)
2.2.1 浮點型特點
2.2.2 代碼示例
2.2.3 精度問題
2.3 字符型(char)
2.3.1 字符型特性
2.3.2 代碼示例
2.3.3 常見轉義字符
2.4 布爾型(bool)
2.4.1 布爾型特點
2.4.2 代碼示例
三、枚舉類型(enum)
3.1 基本枚舉定義
3.2 C++11 強類型枚舉
四、變量命名規則與最佳實踐
4.1 命名規則
4.2 命名風格
4.3 初始化建議
五、總結
一、變量與數據類型概述
1.1 什么是變量?
變量是程序中用于存儲數據的容器,每個變量需要指定一個數據類型,以決定:
- 存儲空間大小(內存占用)
- 數據的取值范圍
- 可執行的操作類型
1.2 數據類型分類
C++ 是靜態類型語言,變量類型在聲明時確定。基礎數據類型包括:
- 整型(int, short, long)
- 浮點型(float, double)
- 字符型(char)
- 布爾型(bool)
- 枚舉型(enum)
二、基本數據類型詳解
2.1 整型(int, short, long)
2.1.1 常見整型類型
類型 | 占用字節 | 范圍(32位系統) |
---|---|---|
short | 2 | -32768 ~ 32767 |
int | 4 | -2147483648 ~ 2147483647 |
long | 4 | 同 int |
long long | 8 | ±9.2e18 |
2.1.2 代碼示例
#include <iostream>
using namespace std;int main() {int age = 25; // 聲明int變量short temperature = -5; // 聲明short變量long population = 7800000000L; // long變量需加后綴Lcout << "Age: " << age << endl;cout << "Temperature: " << temperature << endl;cout << "Population: " << population << endl;return 0;
}
輸出:
Age: 25
Temperature: -5
Population: 7800000000
2.1.3 注意事項
- 32位系統下?
int
?通常為 4 字節,64位系統可能不同 - 使用?
LLONG_MAX
?等常量查看最大值(需包含?<climits>
?頭文件)
2.2 浮點型(float, double)
2.2.1 浮點型特點
類型 | 占用字節 | 精度 | 表示范圍 |
---|---|---|---|
float | 4 | 6-7 位有效數字 | 3.4e-38 ~ 3.4e+38 |
double | 8 | 15-16 位有效數字 | 1.7e-308 ~ 1.7e+308 |
2.2.2 代碼示例
#include <iostream>
using namespace std;int main() {float pi = 3.14159f; // float變量需加后綴fdouble gravity = 9.81; // double默認類型double scientific = 6.022e23; // 科學計數法cout << "Pi: " << pi << endl;cout << "Gravity: " << gravity << endl;cout << "Scientific: " << scientific << endl;return 0;
}
輸出:
Pi: 3.14159
Gravity: 9.81
Scientific: 6.022e+23
2.2.3 精度問題
float a = 0.1f;
float b = 0.2f;
if (a + b == 0.3f) { // 實際不會成立!cout << "Equal";
} else {cout << "Not equal"; // 輸出此行
}
原因:浮點數在計算機中是以二進制存儲的,某些十進制小數無法精確表示。
2.3 字符型(char)
2.3.1 字符型特性
- 占用 1 字節(8 bit)
- 實際存儲的是 ASCII 碼值(0~127)
- 可直接操作字符或其對應的整數值
2.3.2 代碼示例
#include <iostream>
using namespace std;int main() {char grade = 'A'; // 字符常量char newline = '\n'; // 轉義字符char ascii_value = 65; // 直接使用ASCII碼cout << "Grade: " << grade << endl;cout << "ASCII 65: " << ascii_value << endl;cout << "Newline: " << newline << "END" << endl;return 0;
}
輸出:
Grade: A
ASCII 65: A
Newline:
END
2.3.3 常見轉義字符
轉義字符 | 含義 |
---|---|
\n | 換行 |
\t | 制表符 |
\\ | 反斜杠 |
\" | 雙引號 |
\' | 單引號 |
2.4 布爾型(bool)
2.4.1 布爾型特點
- 占用 1 字節
- 取值僅能是?
true
?或?false
- 在條件判斷中自動轉換:
- 非零值 →?
true
- 零值 →?
false
- 非零值 →?
2.4.2 代碼示例
#include <iostream>
using namespace std;int main() {bool is_raining = true;bool has_error = 0; // 0 → falseif (is_raining) {cout << "Bring an umbrella!" << endl;}if (!has_error) {cout << "No error detected." << endl;}return 0;
}
輸出:
Bring an umbrella!
No error detected.
三、枚舉類型(enum)
3.1 基本枚舉定義
#include <iostream>
using namespace std;int main() {enum Color { RED, GREEN, BLUE }; // 自動從0開始編號Color my_color = GREEN;cout << "RED = " << RED << endl; // 輸出 0cout << "GREEN = " << GREEN << endl; // 輸出 1cout << "BLUE = " << BLUE << endl; // 輸出 2return 0;
}
3.2 C++11 強類型枚舉
enum class Direction { UP, DOWN, LEFT, RIGHT }; // 不會隱式轉換為int
Direction dir = Direction::UP;// 錯誤:不能直接比較int和Direction
// if (dir == 0) { ... }// 正確方式:
if (dir == Direction::UP) {cout << "Going up!" << endl;
}
四、變量命名規則與最佳實踐
4.1 命名規則
- 只能使用字母、數字和下劃線(
_
) - 不能以數字開頭
- 區分大小寫(
age
?≠?Age
) - 不可使用C++關鍵字(如?
int
,?class
)
4.2 命名風格
風格 | 示例 | 適用場景 |
---|---|---|
駝峰命名法 | myVariable | 變量名 |
蛇形命名法 | my_variable | 常量/宏定義 |
全大寫 | MAX_VALUE | 全局常量 |
4.3 初始化建議
// 推薦方式(C++11統一初始化)
int x{5}; // 值初始化
int y{}; // 零初始化
int z{10.5}; // 編譯錯誤(防止隱式窄化)// 不推薦方式
int a = 5; // C風格初始化
int b = {5}; // C++11列表初始化
五、總結
數據類型 | 用途 | 示例 |
---|---|---|
int | 存儲整數 | int count = 100; |
float/double | 存儲小數 | double price = 9.99; |
char | 存儲單個字符 | char letter = 'Z'; |
bool | 存儲邏輯值 | bool flag = true; |
enum | 定義命名的整數常量集合 | enum Status { OK, ERROR }; |