目录

  1. C++ 数据类型概述
  2. 内置数据类型(基本数据类型)
  3. 复合数据类型(数组、指针、引用、结构体、联合体)
  4. 抽象数据类型(类、枚举、模板)
  5. typedefusing
  6. 类型转换(隐式转换、显式转换)
  7. 参考资料

1. C++ 数据类型概述

在 C++ 中,每个变量都必须有一个明确的数据类型。C++ 的数据类型主要分为以下几类:

  1. 内置数据类型(基本数据类型):如 intfloatcharbool 等。
  2. 复合数据类型:如 数组、指针、引用、结构体、联合体
  3. 抽象数据类型(ADT):如 类(class)、枚举(enum)、模板(template)
  4. 自定义数据类型:使用 typedefusing 定义新类型。
  5. 类型转换:如 隐式转换、显式转换

2. 内置数据类型(基本数据类型)

C++ 提供了一组基本数据类型,它们的大小取决于具体的编译器和系统架构

整数类型

类型关键字典型大小(位数)取值范围
short短整型16-32,76832,767
int整型32-2,147,483,6482,147,483,647
long长整型32 或 64依赖于系统
long long超长整型64-9,223,372,036,854,775,8089,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_tUTF-16 字符16C++11 引入
char32_tUTF-32 字符32C++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. typedefusing

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. 参考资料


总结

  1. 内置类型:整型、浮点型、字符、布尔
  2. 复合类型:数组、指针、引用、结构体、联合体
  3. 抽象类型:类、枚举、模板
  4. 类型转换:隐式转换和显式转换
  5. 使用 typedefusing 定义新类型

掌握 C++ 数据类型是高效编程的基础!🚀