🚀 C++ 变量类型详解:从基础到进阶¶
💡 本文将带你全面掌握 C++ 中的变量类型,从基本数据类型到高级自定义类型,助你夯实编程基础!
🧱 基本数据类型¶
1. 整型家族¶
类型 | 字节数(常见) | 范围 | 示例 |
---|---|---|---|
int |
4B | -2,147,483,648 到 2,147,483,647 | int age = 25; |
short |
2B | -32,768 到 32,767 | short year = 2023; |
long |
4B/8B | 系统相关 | long population = 7_800_000_000L; |
long long |
8B | -9e18 到 9e18 | long long bigNumber = 1'000'000'000'000LL; |
unsigned int |
4B | 0 到 ~4e9 | unsigned count = 100U; |
📌 小贴士: 使用后缀修饰符(如 L
/LL
/U
)可明确常量类型
C++ | |
---|---|
2. 浮点型世界¶
类型 | 字节数 | 精度 | 示例 |
---|---|---|---|
float |
4B | ~7位有效数字 | float pi = 3.14f; |
double |
8B | ~15位有效数字 | double gravity = 9.81; |
long double |
12B/16B | 更高精度 | long double epsilon = 1e-20L; |
💡 注意: 浮点数比较需谨慎!推荐使用 std::abs(a - b) < EPSILON
方式判断相等性
C++ | |
---|---|
3. 字符与布尔类型¶
类型 | 特点 | 示例 |
---|---|---|
char |
单字节字符 | char grade = 'A'; |
wchar_t |
宽字符(2/4B) | wchar_t symbol = L'Ω'; |
bool |
逻辑值 | bool is_valid = true; |
✨ 新特性(C++20+):
- char8_t
: UTF-8 字符(需 /std:c++20
编译选项)
- char16_t
/char32_t
: UTF-16/32 支持
🎛️ 复合数据类型¶
1. 数组与字符串¶
C++ | |
---|---|
⚠️ 警告: C风格字符串易出错,推荐使用 std::string
(后续章节讲解)
2. 指针与引用¶
🔍 对比: - 指针: 可修改指向对象 - 引用: 一旦绑定不可更改
📦 用户自定义类型¶
1. 结构体(Struct)¶
C++ | |
---|---|
2. 枚举类型(Enum)¶
🔧 建议: 使用 enum class
避免命名冲突(C++11+)
🔄 特殊类型与关键字¶
1. void
类型¶
- 表示无类型
- 常见于函数返回值声明
void*
可指向任意类型数据
2. 类型别名(Type Aliases)¶
🛠️ 变量定义与初始化¶
1. 定义方式¶
C++ | |
---|---|
2. 初始化陷阱¶
❌ 错误示例:
✅ 正确做法:
C++ | |
---|---|
⚠️ 注意事项¶
1. 内存对齐¶
- 不同平台对内存对齐要求不同
- 使用
alignof(T)
查询对齐要求 - 使用
#pragma pack
可调整对齐方式
2. 类型转换¶
-
显式转换(强制类型转换):
-
隐式转换可能导致精度丢失!
❓ 常见问题解答¶
Q1: 如何查看变量类型大小?¶
A: 使用 sizeof(类型)
或 sizeof(变量)
C++ | |
---|---|
Q2: 如何处理大整数运算?¶
A: 使用 long long
或第三方库(如 Boost.Multiprecision)
Q3: 如何选择合适的类型?¶
A: 根据需求权衡: - 存储空间 - 数值范围 - 运算精度 - 平台兼容性