C++学习第三弹:数据类型

youziawa 发布于 2025-07-21 88 次阅读


上一篇文章中提到了类型这一概念,在使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当我们创建一个变量时,就会在内存中保留一些空间。我们可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。

基本内置类型:

C++定义了一套包括算术类型(arithmetic type)空类型(void)在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值,仅用于特殊场合,例如:当一个函数不返回任何值时,选择空类型作为返回类型。

算术类型:

算术类型分为两类:整型(integral type)浮点型。其中,字符和布尔类型属于整形。

算术类型的尺寸在不同机器上有差别,下面是C++标准规定的尺寸的最小值。

类型含义最小尺寸
bool布尔类型未定义
char字符8位
wchar_t宽字符16位
char16_tUnicode字符16位
char32_tUnicode字符32位
short短整型16位
int整型16位
long长整型32位
long long长整型64位
float单精度浮点数6位有效数字
double双精度浮点数10位有效数字
long double扩展精度浮点数10位有效数字

布尔值(bool)的取值是真(true)或假(false)。
一个char的大小和一个机器字节一样。
一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大。
大多数编译器实现了浮点型的更高的精确度。

带符号类型和无符号类型:

除去布尔型和扩展字符型,其他的整型可以划分为带符号的和无符号的。带符号类型可以表示正数、负数和0,无符号类型仅能表示非负数。

类型int、short、long和long long都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型。

与其他整型不同,字符型被分为:char、signed char和unsigned char三种。但要注意,char与signed char不同,类型char实际上会表现为带符号的或不带符号的,这取决于编译器。

如何选择基本类型:

  • 明确知晓数值不可能为负时,使用无符号类型。
  • 使用int进行数值运算时,short一般太小,long和int差不多,因此数值超过int时直接使用long long。
  • 在算数表达式中不要使用char和bool
  • 执行浮点数运算选用double

派生数据类型:

数据类型描述示例
数组相同类型元素的集合int arr[5] = {1, 2, 3, 4, 5};
指针存储变量内存地址的类型int* ptr = &x;
引用变量的别名int& ref = x;
函数函数类型,表示函数的签名int func(int a, int b);
结构体用户定义的数据类型,可以包含多个不同类型的成员struct Point { int x; int y; };
用户定义的数据类型,支持封装、继承和多态class MyClass { ... };
联合体多个成员共享同一块内存union Data { int i; float f; };
枚举用户定义的整数常量集合enum Color { RED, GREEN, BLUE };

小结:学习了C++的基本数据类型和使用方法。