Skip to content

C++ 运算符

运算符是对值进行操作以执行特定数学或逻辑计算的符号。它们构成了任何编程语言的基础。在 C++ 中,我们有内置的运算符来提供所需的功能。

运算符操作操作数。例如

C++
int c = a + b;

这里,'+' 是加法运算符。'a' 和 'b' 是被 '添加' 的操作数。

C++ 中的运算符可分为 6 种类型:

1.算术运算符 2.关系运算符 3.逻辑运算符 4.按位运算符 5.赋值运算符 6.三元运算符或条件运算符

C++ 中的运算符

1) 算术运算符

这些运算符用于对操作数执行算术或数学运算。例如,'+' 用于加法,'-' 用于减法,'*' 用于乘法,等等。

算术运算符可分为 2 种类型:

A) 一元运算符:这些运算符操作或使用单个操作数。例如:Increment(++) 和 Decrement(–) 运算符。

名字 象征 描述
递增运算符 ++ 将变量的整数值增加 1 int a = 5;一个++;返回 6
递减运算符 -- 将变量的整数值减少 1 int a = 5;一个–;返回 4

例:

描述

输出

C++
a++ is 10
++a is 12
b-- is 15
--b is 13

时间复杂度: O(1) 辅助空间: O(1)

注意: ++a 和 a++ 都是递增运算符,但是,两者略有不同。

在 ++a 中,变量的值首先递增,然后在程序中使用它。在 a++ 中,首先分配变量的值,然后递>增。递减运算符也会发生类似情况。

B) 二元运算符:这些运算符操作或处理两个操作数。例如:Addition(+)、Subtraction(-) 等。

名字 象征 描述
加法 + 添加两个操作数 int a = 3, b = 6;int c = a+b;c = 9
减法 从第一个操作数中减去第二个操作数 int a = 9, b = 6;int c = a-b;c = 3
乘法 * 两个操作数相乘 int a = 3, b = 6;int c = a*b;c = 18
划分 / 将第一个操作数除以第二个操作数 int a = 12, b = 6;int c = a/b;c = 2
模运算 % 返回余数 - 整数除法 int a = 8, b = 6;int c = a%b;c = 2

注意: 模运算符 (%) 运算符只能与整数一起使用。

C++
// CPP Program to demonstrate the Binary Operators
#include <iostream>
using namespace std;

int main()
{
    int a = 8, b = 3;

    // Addition operator
    cout << "a + b = " << (a + b) << endl;

    // Subtraction operator
    cout << "a - b = " << (a - b) << endl;

    // Multiplication operator
    cout << "a * b = " << (a * b) << endl;

    // Division operator
    cout << "a / b = " << (a / b) << endl;

    // Modulo operator
    cout << "a % b = " << (a % b) << endl;

    return 0;
}

输出

C++
a + b = 11
a - b = 5
a * b = 24
a / b = 2
a % b = 2

时间复杂度: O(1) 辅助空间: O(1)

2) 关系运算符

这些运算符用于比较两个操作数的值。例如,'>' 检查一个操作数是否大于另一个操作数,等等。结果返回一个布尔值,即 truefalse。

名字 象征 描述
等于 == 检查两个操作数是否相等 int a = 3, b = 6;a==b;返回 false
大于 > 检查第一个操作数是否大于第二个操作数 int a = 3, b = 6;a>b;返回 false
大于或等于 >= 检查第一个操作数是否大于或等于第二个操作数 int a = 3, b = 6;a>=b;返回 false
小于 < 检查第一个操作数是否小于第二个操作数 int a = 3, b = 6;a<b;返回 true
小于或等于 <= 检查第一个操作数是否小于或等于第二个操作数 int a = 3, b = 6;a<=b;返回 true
不等于 != 检查两个操作数是否不相等 int a = 3, b = 6;a!=b;返回 true

C++
// CPP Program to demonstrate the Relational Operators
#include <iostream>
using namespace std;

int main()
{
    int a = 6, b = 4;

    // Equal to operator
    cout << "a == b is " << (a == b) << endl;

    // Greater than operator
    cout << "a > b is " << (a > b) << endl;

    // Greater than or Equal to operator
    cout << "a >= b is " << (a >= b) << endl;

    //  Lesser than operator
    cout << "a < b is " << (a < b) << endl;

    // Lesser than or Equal to operator
    cout << "a <= b is " << (a <= b) << endl;

    // true
    cout << "a != b is " << (a != b) << endl;

    return 0;
}

输出

C++
a == b is 0
a > b is 1
a >= b is 1
a < b is 0
a <= b is 0
a != b is 1
时间复杂度: O(1) 辅助空间: O(1)

这里, 0 表示 false 1 ** 表示true **。要了解更多信息,请参阅文章 – 关系运算符

3) 逻辑运算符

这些运算符用于组合两个或多个条件或约束,或补充对所考虑的原始条件的评估。结果返回一个布尔值,即 truefalse

名字 象征 描述
逻辑 AND && 仅当所有操作数均为 true 或非零时,才返回 true int a = 3, b = 6;A&&B;返回 true
逻辑 OR || 如果任一操作数为 true 或非零,则返回 true int a = 3, b = 6;一个||b;返回 true
逻辑 NOT ! 如果操作数为 false 或零,则返回 true int a = 3;!一个;返回 false

C++
// CPP Program to demonstrate the Logical Operators
#include <iostream>
using namespace std;

int main()
{
    int a = 6, b = 4;

    // Logical AND operator
    cout << "a && b is " << (a && b) << endl;

    // Logical OR operator
    cout << "a || b is " << (a || b) << endl;

    // Logical NOT operator
    cout << "!b is " << (!b) << endl;

    return 0;
}

输出

C++
a && b is 1
a ! b is 1
!b is 0

时间复杂度: O(1) 辅助空间: O(1)

这里, 0 表示 false 1 ** 表示 true **。要了解更多信息,请参阅文章 – 逻辑运算符

4) 按位运算符

这些运算符用于对操作数执行 bit-level 操作。运算符首先转换为位级,然后对操作数执行计算。可以在位级别执行加法、减法、乘法等数学运算,以加快处理速度。

名字 象征 描述
二进制 AND & 如果两个操作数中都存在 bit,则向计算结果复制一个位 int a = 2, b = 3;(a & b);返回 2
二进制 OR | 如果计算结果存在于任何操作数中,则向计算结果复制一个位 int a = 2, b = 3;(一 | 二);返回 3
二进制 XOR ^ 如果该位存在于任一操作数中,但不是同时存在于两个操作数中,则将其复制到计算结果中 int a = 2, b = 3;(a ^ b);返回 1
左移 << 将值向左移动右操作数指定的位数。 int a = 2, b = 3;(a << 1);返回 4
右移 >> 将值向右移动右操作数指定的位数。 int a = 2, b = 3;(第 1 >>);返回 1
一个人的补充 ~ 将二进制数字 1 更改为 0,将 0 更改为 1 int b = 3;(~b);返回 -4

注: 只有 char int 数据类型可以与按位运算符一起使用。

C++
// CPP Program to demonstrate the Bitwise Operators
#include <iostream>
using namespace std;

int main()
{
    int a = 6, b = 4;

    // Binary AND operator
    cout << "a & b is " << (a & b) << endl;

    // Binary OR operator
    cout << "a | b is " << (a | b) << endl;

    // Binary XOR operator
    cout << "a ^ b is " << (a ^ b) << endl;

    // Left Shift operator
    cout << "a<<1 is " << (a << 1) << endl;

    // Right Shift operator
    cout << "a>>1 is " << (a >> 1) << endl;

    // One’s Complement operator
    cout << "~(a) is " << ~(a) << endl;

    return 0;
}

输出

Text Only
a & b is 4
a | b is 6
a ^ b is 2
a<<1 is 12
a>>1 is 3
~(a) is -7

时间复杂度: O(1) 辅助空间: O(1)

要了解更多信息,请参阅文章 – 按位运算符

5) 赋值运算符

这些运算符用于为变量赋值。赋值运算符的左侧操作数是变量,赋值运算符的右侧操作数是值。右侧的值必须与左侧的变量具有相同的数据类型,否则编译器将引发错误。

名字 象征 描述
赋值运算符 = 将右侧的值分配给左侧的变量 int a = 2;a = 2
加法和赋值运算符 += 首先将左侧变量的当前值与右侧的值相加,然后将结果分配给左侧的变量 int a = 2, b = 4;a+=b;a = 6
减法和赋值运算符 -= 首先从左侧变量的当前值中减去右侧的值,然后将结果分配给左侧的变量 int a = 2, b = 4;a-=b;a = -2
乘法和赋值运算符 *= 首先将左侧变量的当前值乘以右侧的值,然后将结果分配给左侧的变量 int a = 2, b = 4;a*=b;a = 8
除法和赋值运算符 /= 首先将左侧变量的当前值除以右侧的值,然后将结果分配给左侧的变量 int a = 4, b = 2;a /=b;a = 2

C++
// CPP Program to demonstrate the Assignment Operators
#include <iostream>
using namespace std;

int main()
{
    int a = 6, b = 4;

    // Assignment Operator
    cout << "a = " << a << endl;

    //  Add and Assignment Operator
    cout << "a += b is " << (a += b) << endl;

    // Subtract and Assignment Operator
    cout << "a -= b is " << (a -= b) << endl;

    //  Multiply and Assignment Operator
    cout << "a *= b is " << (a *= b) << endl;

    //  Divide and Assignment Operator
    cout << "a /= b is " << (a /= b) << endl;

    return 0;
}

输出

Text Only
a = 6
a += b is 10
a -= b is 6
a *= b is 24
a /= b is 6

时间复杂度: O(1) 辅助空间: O(1)

6) 三元或条件运算符 (?:)

此运算符根据条件返回值。

Text Only
Expression1? Expression2: Expression3

三元运算符 根据 Expression1 ** 的计算确定答案。如果为 true ,则计算 Expression2 ** 并将其用作表达式的答案。如果 Expression1 ** 为 false ,则计算 Expression3 ** 并将其用作表达式的答案。

这个运算符需要三个操作数,因此它被称为三元运算符。

C++
// CPP Program to demonstrate the Conditional Operators
#include <iostream>
using namespace std;

int main()
{
    int a = 3, b = 4;

    // Conditional Operator
    int result = (a < b) ? b : a;
    cout << "The greatest number is " << result << endl;

    return 0;
}

输出

C++
The greatest number is 4

时间复杂度: O(1) 辅助空间: O(1)

7) 除了上面讨论的运算符之外,C++ 中还有一些其他常见的运算符。以下是详细讨论的这些运算符的列表:

A) sizeof 运算符:此一元运算符用于计算其操作数或变量的大小。

C++
sizeof(char); // returns 1

B) 逗号运算符(,):此二元运算符(由标记表示)用于计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。它用于将各种表达式组合在一起。

C++
int a = 6;
int b = (a+1, a-2, a+5); // b = 11

C) -> 运算符:此运算符用于访问类或结构体的变量。

C++
cout<<emp->first_name;

D) Cast 运算符:此一元运算符用于将一种数据类型转换为另一种数据类型。

C++
float a = 11.567;
int c = (int) a; // returns 11

E) 点运算符(.):此运算符用于访问 C++ 中结构变量或类对象的成员。

C++
cout<<emp.first_name;

F) & 运算符:这是一个指针运算符,用于表示操作数的内存地址。

G) * 运算符:这是一个间接运算符

C++
// CPP Program to demonstrate the & and * Operators
#include <iostream>
using namespace std;

int main()
{
    int a = 6;
    int* b;
    int c;
    //  & Operator
    b = &a;

    // * Operator
    c = *b;
    cout << " a = " << a << endl;
    cout << " b = " << b << endl;
    cout << " c = " << c << endl;

    return 0;
}

输出

C++
 a = 6
 b = 0x7ffe8e8681bc
 c = 6

H) <<运算符:称为插入运算符。它与 cout 一起使用以打印输出。

I) >>运算符:称为提取运算符。它与 cin 一起使用以获取输入。

C++
int a;
cin>>a;
cout<<a;

时间复杂度: O(1) 辅助空间: O(1)

运算符优先级图

优先权运算符描述关联性
1.()括号(函数调用)从左到右
[]方括号 (数组下标) 
.通过对象名称选择成员 
->通过指针选择成员 
++/–后缀递增/递减 
2.++/–前缀递增/递减从右到左
+/-一元加/减 
!~逻辑求反/按位补码 
(类型)Cast (将值转换为类型的临时值) 
*引用 
&地址(操作数) 
size的确定此实现的大小(以字节为单位) 
3.*,/,%乘法/除法/模数从左到右
4.+/-加法/减法从左到右
5.<< , >>左按位移,右按位移从左到右
6.< , <=关系 小于/小于或等于从左到右
> , >=关系大于/大于或等于从左到右
7.== , !=关系等于/不等于从左到右
8.&按位 AND从左到右
9.^按位异或从左到右
10.|按位(含 OR)从左到右
11.&&逻辑 AND从左到右
12.||逻辑 OR从左到右
13.?:三元条件从右到左
14.=分配从右到左
+= , -=加法/减法赋值 
*= , /=乘法/除法赋值 
%= , &=模数/按位 AND 赋值 
^= , |=按位互斥/非独占 OR 赋值 
<>=按位左/右分配 
15.,表达式分隔符从左到右

夏天来了,也是提高技能的时候了!超过 5,000 名学习者现在已经完成了从 DSA 基础知识到高级开发计划(如全栈、后端开发、数据科学)的旅程。

当我们的 DSA to Development: Coding Guide 将帮助您在几个月内掌握所有这些时,为什么还要去其他任何地方呢!现在就申请我们的DSA发展计划,我们的顾问将与您联系以获得进一步的指导和支持。

Comments