C++ 词法单元¶
在 C++ 中,词法单元可以定义为编译器理解的 C++ 程序的最小构建块。C++ 源代码中的每个单词都可以被视为一个词法单元。
C++ 中的词法单元类型¶
我们有几种类型的词法单元,每种词法单元在 C++ 的语法和语义中都发挥着特定的作用。以下是 C++ 中主要的词法单元类型:
- 标识符
- 关键字
- 常量
- 字符串
- 特殊符号
- 运算符
1. 标识符¶
在 C++ 中,像变量、函数、类或结构体这样的实体必须在程序中具有唯一的名称,以便可以唯一地识别它们。赋予这些实体的唯一名称称为标识符。
建议选择有效且相关的标识符名称,以编写可读性强且易于维护的程序。关键字不能作为标识符,因为它们是用于执行特定任务的保留字。在以下示例中,“first_name” 是一个标识符。
定义标识符名称时必须遵循以下规则:
- 标识符只能以字母或下划线(_)开头。
- 标识符可以由字母(A-Z 或 a-z)、数字(0-9)和下划线(_)组成。不能使用空格和特殊字符作为标识符的名称。
- 关键字不能用作标识符,因为它们是用于执行特定任务的保留字。例如,string、int、class、struct 等。
- 标识符在其命名空间中必须唯一。
- C++ 是区分大小写的语言,因此标识符“first_name”和“First_name”是不同的实体。
以下是 C++ 中有效和无效标识符的一些示例:
有效标识符 | 无效标识符 |
---|---|
_name | #name(不能以特殊字符开头,除了‘_’) |
Number89 | 2num(不能以数字开头) |
first_name | first name(不能包含空格) |
last_name | string(不能与关键字相同) |
2. 关键字¶
C++ 中的关键字是编程语言中的保留字,在程序中具有特定的含义和功能。关键字不能用作标识符来命名变量。
例如,变量或函数不能命名为‘int’,因为它用于声明整数数据类型。
C++ 中保留了 95 个关键字。主要的关键字包括:
break, try, catch, char, class, const, continue, default, delete, auto, else, friend, for, float, long, new, operator, private, protected, public, return, short, sizeof, static, this, typedef, enum, throw, mutable, struct, case, register, switch, and, or, namespace, static_cast, goto, not, xor, bool, do, double, int, unsigned, void, virtual, union, while
3. 常量¶
常量是 C++ 中用于在初始化时定义变量的词法单元,赋值后无法更改。
我们可以通过‘const’关键字和‘#define’预处理指令两种方式来定义常量。我们分别来看这两种方法。
- 使用‘const’关键字定义常量
常量是定义后在程序执行期间不会改变的值。我们可以将任何类型的数据定义为常量,如整数、浮点数、字符串和字符。文字是赋给常量变量的常量值。
语法:
- 使用‘#define’预处理指令定义常量
#define 预处理器可以用于定义常量标识符,该标识符在程序中出现的地方会被定义的值替换。它在主函数外全局定义。
语法:
4. 字符串¶
在 C++ 中,字符串不是像‘int’、‘char’或‘float’那样的内置数据类型。它是 STL 库中提供的一个类,提供了处理字符序列的功能,表示文本字符串。
当我们使用‘string’关键字定义变量时,我们实际上是在定义一个表示字符序列的对象。我们可以对字符串执行字符串类提供的各种方法,如 length()、push_back() 和 pop_back()。
声明字符串的语法:
用双引号(“”)初始化字符串对象。
5. 特殊符号¶
特殊符号是具有特定语法含义的标记字符。这些符号用于各种功能,包括结束语句、定义控制语句、分隔项目等。
以下是 C++ 编程中最常用的特殊符号:
- 分号(;):用于终止语句。
- 方括号([]):用于存储数组元素。
- 大括号({}):用于定义代码块。
- 范围解析符(::):用于访问命名空间、类等的成员。
- 点(.):点操作符,也称为成员访问操作符,用于访问类和结构体成员。
- 赋值操作符(=):用于将值赋给变量。
- 双引号(“”):用于括起字符串字面量。
- 单引号(‘’):用于括起字符字面量。
6. 运算符¶
C++ 运算符是用于对操作数(如变量、常量或表达式)执行操作的特殊符号。C++ 提供了多种运算符用于执行特定类型的操作,包括算术运算、比较运算、逻辑运算等。
例如,(A+B) 中,‘A’ 和 ‘B’ 是操作数,而 ‘+’ 是用于添加两个操作数的算术运算符。
运算符的类型¶
- 一元运算符:仅与单个操作数一起使用,执行单个变量上的操作。例如,递增和递减运算符。
- 递增运算符(++):用于将操作数的值增加 1。
- 递减运算符(--):用于将操作数的值减少 1。
- 二元运算符:与两个操作数一起使用,在两个变量之间执行操作。例如,(A<B),小于(<)运算符比较 A 和 B,如果 A 小于 B,则返回 true,否则返回 false。
- 算术运算符:对操作数执行基本的算术操作,包括 ‘+’、‘-’、‘*’、‘/’ 和 ‘%’。
- 比较运算符:用于比较两个操作数,包括 ‘==’、‘!=’、‘<’、‘>’、‘<=’ 和 ‘>=’。
- 逻辑运算符:对布尔值执行逻辑操作,包括 ‘&&’、‘||’ 和 ‘!’。
- 赋值运算符:用于将值赋给变量,包括 ‘=’、‘+=’、‘-=’、‘*=’、‘/=’ 和 ‘%=’。
- 位运算符:对整数执行位操作,包括 ‘&’、‘|’、‘^’、‘~’、‘<<’ 和 ‘>>’。
- 三元运算符:唯一一个需要三个操作数的运算符,也称为条件运算符,用于条件表达式。
语法:
如果 ‘Expression1’ 为 true,则执行 ‘Expression2’,否则执行 ‘Expression3’