C++ 中的运算符优先级和结合性
本文将讨论 C++ 中的运算符以及它们在表达式中使用时如何求值。 它们的操作有特定的规则,因此我们将研究它们以了解使用 C++ 运算符的表达式求值。
C++ 中的运算符
运算符是用于操作变量和值的符号。 例如,+ 和 - 运算符用于加法和减法。
在C++中,运算符分为4类:
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
算术运算符
这些运算符用于对某些数据执行不同的算术运算。 例如,* 用于将两个或多个数字或变量相乘。
下面列出了许多算术运算符:
运算符 符号 | 说明 |
---|---|
+ | 加法运算符 |
- | 减法运算符 |
* | 乘法运算符 |
/ | 分部操作员 |
% | 模数运算符(除法运算后的余数) |
赋值运算符
这些运算符可以为变量分配一些特定的值; = 是赋值运算符。 考虑下面的例子。
int a;
a = 5;
此处,将使用赋值运算符 = 为 a 赋值 5。 还有其他赋值运算符,如下所示:
运算符 | 等效语句 |
---|---|
a += 5 | a = a +5 |
a -= 5 | a = a -5 |
a *= 5 | a = a*5 |
a /= 5 | a = a /5 |
a %= 5 | a = a%5 |
关系运算符
关系运算符用于比较 2 个值或操作数。 如果关系评估为 true,则返回值 1;如果评估为 false,则返回值 0。
C++ 中使用多个关系运算符:
操作符 | 说明 -- | -- <, > | 大于和小于 <=、>= | 小于等于、大于等于 == | 等于 != | 不等于
逻辑运算符
逻辑运算符可以评估表达式是真还是假。 如果为 true,则返回结果为 1; 否则,0。
逻辑运算符有多种,如下所示:
运营符 | 说明 |
---|---|
&& | 与运算符。 如果所有表达式都为 true,则返回 true。 |
` | |
! | 非运算符。 如果表达式为假,则返回真。 |
C++ 中的运算符优先级和结合性
如果我们有一个包含多个运算符的表达式,则该表达式将根据运算符的优先级进行计算。 优先级定义了运算符的优先级以及首先评估哪个运算符。
考虑下面的例子:
a = 3*5/2 +3
现在在这个表达式中,首先操作哪个运算符是由运算符的优先级决定的。
运算符优先级列表如下表所示:
运算符优先级
现在,我们可以看到某些运算符具有相同的优先级。 使用关联规则计算具有相同优先级的此类运算符的表达式。
关联性定义了要以相同优先级进行计算的运算符的序列。 下表描述了运算符的结合性:
运算符结合性
C++ 表达式中的隐式类型转换
当表达式中存在混合类型变量时,编译器会自动根据运算和操作数的数据类型进行类型转换。 例如,考虑以下代码片段:
int a =2, b = 3, c =5;
double f = 4.5;
double res = a + b/f +c;
在最后一行代码中,我们可以看到三个变量的类型为int,一个变量的类型为double。 根据运算符优先级,/
将首先被计算; 在此表达式中,b/f
表示 int 除以 double,因此结果将转换为 double。
之后,+
将被评估为int和double,因此结果将被转换为double。 因此,res 将是双数据类型。
在这里我们可以看到表达式的结果总是被提升为表达式中涉及的更高的数据类型。
int + double => double + double = double
int * double => double * double = double
double * int => double * double = double
int / double => double / double = double
double / int => double / double = double
int / int = int
您可以在上面的表达式中看到在混合类型表达式的情况下如何将类型提升为更高的数据类型。
相关文章
C++ 中的箭头运算符与点运算符
发布时间:2023/08/26 浏览次数:74 分类:C++
-
要了解点运算符与箭头运算符的不同之处,让我们首先了解这两个运算符的基础知识。C++ 中的点 (.) 运算符 C++ 中的点 (.) 运算符也称为类成员访问运算符,有助于访问任何给定类的公共成员。
在 C++ 中重载括号运算符
发布时间:2023/08/26 浏览次数:103 分类:C++
-
这个简单的编程指南将括号 ([]) 运算符重载为类对象的 getter 和 setter。首先,我们简单介绍一下运算符重载。C++ 中的运算符重载
C++ 中的一元否定运算符
发布时间:2023/08/26 浏览次数:135 分类:C++
-
一元减号运算符用于对数字取负,当它在变量之前使用时,它会对其值取负。一元减号运算符表示 C++ 中的前缀 - 符号。 必须在数字前加上 - 号才能将其取反;
在 C++ 中实例化模板类
发布时间:2023/08/26 浏览次数:186 分类:C++
-
模板类用于创建共享相同实现的新类。 它们主要用于创建提供特定类型的通用实现的抽象基类。模板类是通过为所有模板类方法指定数据类型和参数来实例化的。 然后,实例化的类可以用作程
在 C++ 中删除文件
发布时间:2023/08/26 浏览次数:102 分类:C++
-
文件中的数据不像集成开发环境 (IDE) 中计算机程序生成的输出那样易失。 但是,它是永久性的,用户可以长期检索和使用它。我们可以在 C++ 中执行的文件处理操作包括读取、创建、写入、更
C++ 中的多个代码文件
发布时间:2023/08/26 浏览次数:137 分类:C++
-
本文是关于在单个 C++ 程序中使用多个文件。 对于较大且冗长的项目来说,将所有代码写入一个文件中会变得很麻烦,因此我们将学习如何分离项目中的文件并使其更易于管理且易于重构。
在 C++ 中读取和写入文件位
发布时间:2023/08/25 浏览次数:156 分类:C++
-
在 C++ 中,诸如文本文件压缩之类的过程需要读取文件中的位并将其写入文件中。 在本文中,您将学习如何在 C++ 中毫无错误地读取或写入文件位。
在 C++ 中获取文件扩展名
发布时间:2023/08/25 浏览次数:66 分类:C++
-
文件扩展名是指文件名的最后部分,其中包含有关文件中保存的数据的信息。在 C++ 中,我们可以对包含 C++ 代码的文件使用 .cpp 或 .cxx 扩展名。
检查 MAC 上的 GCC 版本
发布时间:2023/08/25 浏览次数:108 分类:C++
-
GCC 编译器是一种将计算机程序的源代码转换为另一种语言(例如汇编语言或机器代码)的程序。检查 MAC 上的 GCC 版本