在C++编程语言中,变量的类型决定了所存储数据的形式和范围,不同的数据类型可以存储不同类型的数据,具有不同的使用方式和限制。C++的数据类型可以分为基础类型和自定义类型两种。
一、基础类型
1、整型
整型是C++中最常见的数据类型之一,用于表示整数,可以分为有符号和无符号整型。有符号整型可以表示正数、负数和零,无符号整型只能表示零和正数。C++中的整型类型包括:short、int、long、long long以及它们的无符号版本:unsigned short、unsigned int、unsigned long、unsigned long long。其中,short类型通常占用2个字节,int类型占用4个字节(但具体实现与平台相关),long类型占用4个字节,long long类型占用8个字节。
// 整型示例代码 int main() { short s = 1; int i = 2147483647; long l = 2147483647; long long l1 = 9223372036854775807; unsigned short us = 65535; unsigned int ui = 4294967295; unsigned long ul = 4294967295; unsigned long long ul1 = 18446744073709551615; return 0; }
2、浮点型
浮点型用于表示实数,可以分为单精度浮点型(float)和双精度浮点型(double),其中,float类型占用4个字节,能表示的精度约为7位小数;double类型占用8个字节,精度约为16位小数。
// 浮点型示例代码 int main() { float f = 3.1415926f; double d = 3.14159265358979323846; return 0; }
3、布尔型
布尔型只有两个取值:true和false。在C++中,布尔型通常占用1个字节。
// 布尔型示例代码 int main() { bool b1 = true; bool b2 = false; return 0; }
4、字符型
字符型用于表示单个字符,通常占用1个字节。不同的编码方式(如ASCII码、Unicode等)决定了可表示的字符集和编码方式。
// 字符型示例代码 int main() { char c1 = 'A'; char c2 = 65; // ASCII码值为65表示字符'A' return 0; }
二、自定义类型
除了基础类型,C++还提供了自定义类型的机制,允许程序员根据实际需要定义具有特定属性和行为的类型。
1、结构体
结构体是一种自定义类型,允许将不同类型的数据组织在一起形成一个单独的数据类型。结构体通常包含一个或多个成员变量,每个成员变量可以有自己的数据类型,结构体的成员变量可以是基础类型、自定义类型、数组等,可以根据需要定义为有符号或无符号类型。我们可以通过结构体来定义集合类型,表示抽象的或物理上相关联的实体。
// 结构体示例代码 #include <iostream> using namespace std; struct Student { int id; // 学号 char name[10]; // 姓名 int age; // 年龄 float score; // 成绩 }; int main() { Student s = { 1001, "张三", 20, 90.5f }; cout << "学号:" << s.id << endl; cout << "姓名:" << s.name << endl; cout << "年龄:" << s.age << endl; cout << "成绩:" << s.score << endl; return 0; }
2、枚举类型
枚举类型是一种自定义类型,用于定义一组离散的取值(枚举值),通常用于代表程序中的某些状态、选项或者整数常量等。枚举类型可以被赋予默认值,也可以在后续代码中重新赋值。
// 枚举类型示例代码 #include <iostream> using namespace std; enum Week { Sunday = 0, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main() { Week day = Monday; cout << "day = " << day << endl; // 输出结果为1 return 0; }
3、typedef
typedef可以为一个类型定义一个新的别名,可以使代码更加易读易懂。常用于为复杂类型定义简短、易读的名称,提高了代码的可读性,并且易于维护和修改。
// typedef示例代码 #include <iostream> using namespace std; typedef int integer; int main() { integer i = 123; cout << "integer i = " << i << endl; return 0; }
4、指针类型
指针类型也是一种自定义类型,它可以存储指向其他类型的变量的内存地址。在C++中,使用指针可以进行动态内存分配、实现复杂的数据结构以及优化程序性能等。
// 指针类型示例代码 #include <iostream> using namespace std; int main() { int i = 123; int *p = &i; // 定义一个指向int类型变量的指针 cout << "i = " << i << endl; cout << "*p = " << *p << endl; *p = 456; // 修改指向的变量的值 cout << "i = " << i << endl; cout << "*p = " << *p << endl; return 0; }
总之,C++提供了丰富的数据类型和自定义机制,使得程序员可以根据实际需要定义合适的数据类型,提高程序的可读性、可扩展性和可维护性。