C++ 关键字和数据类型简介
大家好,我是 shopeeai,也可以叫我虾皮,中科大菜鸟研究生。昨天已经成功运行了第一个C++程序,今天来学习一下C++ 关键字和数据类型。C++ 中的关键字是由 C++ 标准预先定义的。它们被保留作为语言的一部分,开发者不能将这些关键字用作变量名、函数名或任何其他标识符的名称。每个关键字都有其独特的语义,这些语义告诉编译器如何理解和处理接下来的代码。下面详细讲解一些常见的 C++ 关键字:
基本数据类型关键字
- int, char, float, double, bool, void, wchar_t
基本数据类型关键字用于声明不同类型的变量。例如,int
用于整数,char
用于字符,float
和 double
用于浮点数,bool
用于布尔值,void
表示无类型,通常用于指定不返回任何值的函数的返回类型,wchar_t
用于宽字符。
类型修饰符关键字
- signed, unsigned, short, long
类型修饰符关键字用于修改基本数据类型。例如,unsigned int
表示无符号整数,long double
表示扩展精度的浮点数。
程序控制结构关键字
- if, else, switch, case, default, for, do, while, break, continue, goto
程序控制结构关键字用于控制程序流程。如 if
和 else
用于条件判断,for
和 while
用于循环,break
和 continue
用于循环控制,switch
用于多路分支。
访问控制关键字
- public, protected, private
访问控制关键字用于定义类成员的访问权限。
类和对象相关关键字
- class, struct, union, this, new, delete, virtual, override, final, const_cast, dynamic_cast, reinterpret_cast, static_cast
类和对象相关关键字与面向对象编程相关。class
和 struct
用于定义类,union
定义联合体,this
指向当前对象,new
和 delete
用于动态内存管理,virtual
用于定义虚函数,override
和 final
用于 C++11 中的函数重写控制,类型转换关键字(如 static_cast
)用于类型转换。
异常处理关键字
- try, catch, throw, noexcept
异常处理关键字用于异常处理。
函数和作用域相关关键字
- auto, extern, register, static, mutable, inline, const, volatile
函数和作用域相关关键字用于声明变量或函数的存储类别或行为。例如,static
声明静态存储周期,inline
用于内联函数,const
表示不可变,volatile
表示易变。
命名空间和预处理器关键字
- namespace, using
-
namespace
用于定义命名空间,using
用于引入命名空间中的名称或者创建别名。
其他特殊用途关键字
- sizeof, typedef, enum, template, typename, explicit, operator, true, false
sizeof
用于获取数据类型或对象大小,typedef
用于定义类型别名,enum
定义枚举,template
和 typename
用于模板编程,explicit
防止隐式转换,operator
用于定义运算符重载。
C++11 及更高版本中新增的关键字
- nullptr, constexpr, decltype, noexcept, static_assert, thread_local, alignas, alignof, char16_t, char32_t
nullptr
表示空指针,constexpr
用于编译时常量,decltype
用于推导类型,noexcept
指定不抛出异常,static_assert
用于编译时断言,thread_local
表示线程局部存储,alignas
和 alignof
用于控制对齐,char16_t
和 char32_t
用于 Unicode 字符。
数据类型
在 C++ 中,数据类型是一个非常基本的概念,它定义了变量可以存储的数据种类,以及对这些数据可以执行的操作和表达式。C++ 提供了多种数据类型,主要可以分为以下几类:
1. 基本数据类型
基本数据类型是构建程序的基础,包括整型、浮点型、字符型和布尔型。
a) 整型(Integer Types)
整型用于存储整数值。它们分为几种不同的类型,主要基于存储的大小和范围:
-
int
: 最常用的整型,大小通常是 16 位或 32 位。 -
short int
或short
: 通常是 16 位,用于存储较小的整数。 -
long int
或long
: 至少与int
一样大,通常是 32 位或 64 位,用于较大的整数。 -
long long int
或long long
: 通常是 64 位,用于非常大的整数。 - 无符号版本,如
unsigned int
、unsigned short
,等等,只存储正值和零。
b) 浮点型(Floating-Point Types)
用于存储小数值,包括:
-
float
: 单精度浮点类型。通常是 32 位。 -
double
: 双精度浮点类型。通常是 64 位。 -
long double
: 扩展精度浮点类型。大小和精度由实现决定。
c) 字符型(Character Types)
用于存储单个字符,如字母或数字:
-
char
: 通常是 8 位,可以表示标准 ASCII 字符集。 -
wchar_t
: 宽字符类型,用于存储扩展字符集。 -
char16_t
和char32_t
(C++11 引入): 用于表示 Unicode 字符。
d) 布尔型(Boolean Type)
-
bool
: 用于表示真(true
)或假(false
)。
2. 派生数据类型
派生数据类型允许用户创建复杂类型,包括指针、数组、引用和函数类型。
- 数组:由相同类型的元素构成的集合。
- 指针:存储内存地址的变量。可以指向任何类型的数据。
- 引用:另一个变量的别名。与指针相似,但使用和语法上更安全。
- 函数:返回特定类型的子程序。
3. 用户定义数据类型
用户可以根据需求定义自己的数据类型。
结构体 struct
: 将不同的数据类型组合成一个单元。
联合体 union
: 允许在相同的内存位置存储不同类型的数据。
枚举 enum
: 定义一组命名的整型常量。
4. Void 类型
- 特殊的类型,表示没有值。主要用于指定没有返回值的函数。
5. 类型修饰符
- const: 声明一个不可修改的变量。
- volatile: 指示变量的值可能以程序未明确的方式被改变。
- signed 和 unsigned : 指定整型是否包含负值。
6. C++11 之后的类型
C++11 引入了几个新的类型,如 auto
用于自动类型推断,nullptr
为指针提供了一个标准的空值。