目录
- C++ 数据类型概述
- 内置数据类型(基本数据类型)
- 复合数据类型(数组、指针、引用、结构体、联合体)
- 抽象数据类型(类、枚举、模板)
typedef
和using
- 类型转换(隐式转换、显式转换)
- 参考资料
1. C++ 数据类型概述
在 C++ 中,每个变量都必须有一个明确的数据类型。C++ 的数据类型主要分为以下几类:
- 内置数据类型(基本数据类型):如
int
、float
、char
、bool
等。 - 复合数据类型:如 数组、指针、引用、结构体、联合体。
- 抽象数据类型(ADT):如 类(class)、枚举(enum)、模板(template)。
- 自定义数据类型:使用
typedef
或using
定义新类型。 - 类型转换:如 隐式转换、显式转换。
2. 内置数据类型(基本数据类型)
C++ 提供了一组基本数据类型,它们的大小取决于具体的编译器和系统架构。
整数类型
类型 | 关键字 | 典型大小(位数) | 取值范围 |
---|---|---|---|
short | 短整型 | 16 | -32,768 到 32,767 |
int | 整型 | 32 | -2,147,483,648 到 2,147,483,647 |
long | 长整型 | 32 或 64 | 依赖于系统 |
long long | 超长整型 | 64 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned | 无符号 | 依赖于基础类型 | 取值范围从 0 开始 |
示例:
#include <iostream>
int main() {
short a = 32767; // 短整型
int b = 2147483647; // 整型
long c = 922337203; // 长整型
unsigned int d = 4000;// 无符号整型
std::cout << "short: " << a << "\nint: " << b << "\nlong: " << c << "\nunsigned int: " << d << std::endl;
return 0;
}
浮点类型
类型 | 关键字 | 典型大小(位数) | 精度范围 |
---|---|---|---|
float | 单精度浮点数 | 32 | ~6-7 位小数 |
double | 双精度浮点数 | 64 | ~15-16 位小数 |
long double | 扩展精度浮点数 | 80/128 | 依赖于实现 |
示例:
float pi = 3.14159f;
double e = 2.718281828459;
long double bigNum = 1.234567890123456789L;
字符类型
类型 | 关键字 | 典型大小(位数) | 说明 |
---|---|---|---|
char | 字符类型 | 8 | 存储单个字符 |
wchar_t | 宽字符 | 16/32 | 适用于 Unicode |
char16_t | UTF-16 字符 | 16 | C++11 引入 |
char32_t | UTF-32 字符 | 32 | C++11 引入 |
示例:
char letter = 'A';
wchar_t wletter = L'汉';
char16_t utf16_char = u'あ';
char32_t utf32_char = U'𠜎';
布尔类型
类型 | 关键字 | 取值范围 |
---|---|---|
bool | 布尔值 | true / false |
示例:
bool isCPlusPlusFun = true;
std::cout << std::boolalpha << isCPlusPlusFun; // 输出:true
3. 复合数据类型
数组(Array)
int numbers[5] = {1, 2, 3, 4, 5};
std::cout << numbers[2]; // 输出 3
指针(Pointer)
int x = 10;
int* ptr = &x; // ptr 指向 x 的地址
std::cout << *ptr; // 输出 10
引用(Reference)
int a = 10;
int& ref = a; // ref 作为 a 的别名
ref = 20; // a 也变为 20
结构体(struct)
struct Person {
std::string name;
int age;
};
Person p = {"Alice", 25};
std::cout << p.name;
联合体(union)
union Data {
int i;
float f;
};
Data d;
d.i = 10;
std::cout << d.i;
4. 抽象数据类型
类(class)
class Car {
public:
std::string brand;
void drive() { std::cout << "Driving " << brand; }
};
Car myCar;
myCar.brand = "BMW";
myCar.drive();
枚举(enum)
enum Color { RED, GREEN, BLUE };
Color myColor = GREEN;
std::cout << myColor; // 输出 1
模板(template)
template <typename T>
T add(T a, T b) {
return a + b;
}
std::cout << add(3, 4); // 输出 7
5. typedef
和 using
typedef unsigned int uint; // 旧方法
using uint = unsigned int; // C++11 新方法
6. 类型转换
隐式转换
int a = 10;
double b = a; // int 自动转换为 double
显式转换
double pi = 3.14159;
int n = (int)pi; // C 风格
int m = static_cast<int>(pi); // C++ 风格
7. 参考资料
总结
- 内置类型:整型、浮点型、字符、布尔
- 复合类型:数组、指针、引用、结构体、联合体
- 抽象类型:类、枚举、模板
- 类型转换:隐式转换和显式转换
- 使用
typedef
或using
定义新类型
掌握 C++ 数据类型是高效编程的基础!🚀
发表回复