C++提供豐富的數值類型對應現實世界數字:整數(公交路線216)、浮點數(西紅柿3.5元/斤)。理解其存儲大小、取值範圍、精度特性至關重要。
| 類型 | 說明符 | 位數 | 典型範圍(32位) | 用途 |
|---|---|---|---|---|
| 基本型 | int | 32 | -2,147,483,648 ~ 2,147,483,647 | 最常用、CPU原生、速度最快 |
| 短整型 | short | 16 | -32,768 ~ 32,767 | 節省內存,速度稍慢 |
| 長整型 | long | 32/64 | 32位同int;64位±9.22e18 | 平台相關最大整型 |
| 長長整型 | long long | 64 | ±9,223,372,036,854,775,807 | 極大整數、天文計算 |
signed(默認):最高位為符號位unsigned:無符號位,正數範圍擴大2倍(0 ~ 4,294,967,295 for 32位)unsigned避免硬編碼魔數,保證可移植性:
int res[1024];
memset(res, 0, sizeof(res)); // 自動計算字節數
struct Human { char cName[3]; int nAge; }; // 因對齊佔8字節
cout << sizeof(Human) << endl; // 輸出8
cout << sizeof(huZengmei) << endl; // 同8
| 類型 | 說明符 | 位數 | 有效位數 | 範圍 | 用途 |
|---|---|---|---|---|---|
| 單精度 | float | 32 | 6-7 | ±3.4e38 | 日常小數、節省內存 |
| 雙精度 | double | 64 | 15-16 | ±1.7e308 | 高精度、科學計算首選 |
| 長雙精度 | long double | 96 | 18-19 | ±1.2e4932 | 極高精度、特殊科學計算 |
採用科學記數法存儲:有效數字 × 基數^指數。小數點位置「浮動」,不固定。例:
100000000000.0 → 1.0 × 10^11
0.000000000001 → 1.0 × 10^-12
僅存有效數字與指數,節省空間並統一表示極大極小值。
#include <random>
#include <iostream>
using namespace std;
int main() {
default_random_engine reng;
uniform_int_distribution<int> uni_dist(0, 25); // 均勻分布
random_device rnd_device;
reng.seed(rnd_device()); // 設置種子避免偽隨機重複
const int n = 4;
char code[n];
cout << "請輸入驗證碼:" << endl;
for (int i = 0; i < n; ++i) {
code[i] = 'A' + uni_dist(reng);
cout << code[i];
}
// ... 驗證邏輯
}
default_random_engine + 分布uniform_int_distributionrandom_device提供真隨機種子uni_dist(reng)掌握數值類型特性與隨機數生成,是C++程序設計處理現實數據的基石。