# C++ 运算符

> 原文： [https://www.programiz.com/cpp-programming/operators](https://www.programiz.com/cpp-programming/operators)

#### 在本教程中，我们将借助示例学习 C++ 中不同类型的运算符。 在编程中，运算符是对值或变量进行运算的符号。

运算符是对变量和值执行运算的符号。 例如，`+`是用于加法的运算符，而`-`是用于减法的运算符。

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

1.  算术运算符
2.  赋值运算符
3.  关系运算符
4.  逻辑运算符
5.  按位运算符
6.  其他运算符

* * *

## 1\. C++ 算术运算符

算术运算符用于对变量和数据执行算术运算。 例如，

```cpp
a + b; 
```

此处，`+`运算符用于相加两个变量`a`和`b`。 同样，C++ 中还有其他各种算术运算符。

| 运算符 | 工作方式 |
| --- | --- |
| `+` | 加法 |
| `-` | 减法 |
| `*` | 乘法 |
| `/` | 除法 |
| `%` | 模运算（除法后的余数） |

### 示例 1：算术运算符

```cpp
 #include <iostream>
using namespace std;

int main() {
    int a, b;
    a = 7;
    b = 2;

    // printing the sum of a and b
    cout << "a + b = " << (a + b) << endl;

    // printing the difference of a and b
    cout << "a - b = " << (a - b) << endl;

    // printing the product of a and b
    cout << "a * b = " << (a * b) << endl;

    // printing the division of a by b
    cout << "a / b = " << (a / b) << endl;

    // printing the modulo of a by b
    cout << "a % b = " << (a % b) << endl;

    return 0;
} 
```

**输出**

```cpp
a + b = 9
a - b = 5
a * b = 14
a / b = 3
a % b = 1 
```

在这里，运算符`+`，`-`和`*`分别计算了我们可能期望的加，减和乘。

**除法运算符**

注意我们程序中的操作`(a / b)`。`/`运算符是除法运算符。

从上面的示例可以看出，如果一个整数除以另一个整数，我们将得到商。 但是，如果除数或被除数是浮点数，我们将以小数形式得到结果。

```cpp
In C++,

7/2 is 3
7.0 / 2 is 3.5
7 / 2.0 is 3.5
7.0 / 2.0 is 3.5

```

**模运算符**

模运算符`%`计算余数。 当`a = 9`除以`b = 4`时，余数为 **1**。

**注意**：`%`运算符只能与整数一起使用。

* * *

### 增减运算符

C++ 还提供了递增和递减运算符：分别为`++`和`--`。`++`将操作数的值增加 **1**，而`--`将其减少值 **1**。

例如，

```cpp
int num = 5;

// increasing num by 1
++num; 
```

在此，`num`的值从其初始值 **5** 增加到 **6**。

### 示例 2：递增和递减运算符

```cpp
// Working of increment and decrement operators

#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 100, result_a, result_b;

    // incrementing a by 1 and storing the result in result_a
    result_a = ++a;
    cout << "result_a = " << result_a << endl;

    // decrementing b by 1 and storing the result in result_b   
    result_b = --b;
    cout << "result_b = " << result_b << endl;

    return 0;
} 
```

**输出**

```cpp
result_a = 11
result_b = 99 
```

在上面的程序中，我们将`++`和`--`运算符用作**前缀**。 我们还可以将这些运算符用作**后缀**。

这些运算符用作前缀与用作后缀时略有不同。

要了解有关这些运算符的更多信息，请访问[递增和递减运算符](https://www.programiz.com/article/increment-decrement-operator-difference-prefix-postfix)。

* * *

## 2\. C++ 赋值运算符

在 C++ 中，赋值运算符用于将值赋给变量。 例如，

```cpp
// assign 5 to a
a = 5; 
```

在这里，我们为变量`a`分配了`5`的值。

| 运算符 | 示例 | 相当于 |
| --- | --- | --- |
| `=` | `a = b;` | `a = b;` |
| `+=` | `a += b;` | `a = a + b;` |
| `-=` | `a -= b;` | `a = a - b;` |
| `*=` | `a *= b;` | `a = a * b;` |
| `/=` | `a /= b;` | `a = a / b;` |
| `%=` | `a %= b;` | `a = a % b;` |

### 示例 2：赋值运算符

```cpp
#include <iostream>
using namespace std;

int main() {
    int a, b, temp;

    // 2 is assigned to a
    a = 2;

    // 7 is assigned to b
    b = 7;

   // value of a is assigned to temp
   temp = a;    // temp will be 2
   cout << "temp = " << temp << endl;

    // assigning the sum of a and b to a
    a += b;       // a = a +b
    cout << "a = " << a << endl;

    return 0;
} 
```

**输出**

```cpp
temp = 2
a = 9 
```

* * *

## 3\. C++ 关系运算符

关系运算符用于检查两个操作数之间的关系。 例如，

```cpp
// checks if a is greater than b
a > b; 
```

在此，`>`是关系运算符。 它检查`a`是否大于`b`。

如果关系为**为真**，则返回 **1**，而如果关系为**为假**，则返回 **0**。

| 运算符 | 含义 | 示例 |
| --- | --- | --- |
| `==` | 等于 | `3 == 5`求值为`false` |
| `!=` | 不等于 | `3 != 5`求值为`true` |
| `>` | 大于 | `3 > 5`求值为`false` |
| `<` | 小于 | `3 < 5`求值为`true` |
| `>=` | 大于或等于 | `3 >= 5`求值为`false` |
| `<=` | 小于或等于 | `3 <= 5`求值为`true` |

### 示例 4：关系运算符

```cpp
#include <iostream>
using namespace std;

int main() {
    int a, b;
    a = 3;
    b = 5;
    bool result;

    result = (a == b);   // false
    cout << "3 == 5 is " << result << endl;

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

    result = a > b;   // false
    cout << "3 > 5 is " << result << endl;

    result = a < b;   // true
    cout << "3 < 5 is " << result << endl;

    result = a >= b;  // false
    cout << "3 >= 5 is " << result << endl;

    result = a <= b;  // true
    cout << "3 <= 5 is " << result << endl;

    return 0;
} 
```

**输出**

```cpp
3 == 5 is 0
3 != 5 is 1
3 > 5 is 0
3 < 5 is 1
3 >= 5 is 0
3 <= 5 is 1 
```

**注意**：关系运算符用于决策和循环。

* * *

## 4\. C++ 逻辑运算符

逻辑运算符用于检查表达式是`true`还是`false`。 如果表达式为`true`，则返回 **1**，而如果表达式为`false`，则返回 **0**。

| 运算符 | 示例 | 含义 |
| --- | --- | --- |
| `&&` | `expression1 && expression2` | 逻辑与。仅当所有操作数均为`true`时为`true`。 |
| <code>&#124;&#124;</code> | <code>expression1 &#124;&#124; expression2</code> | 逻辑或。如果至少一个操作数为`true`，则为`true`。 |
| `!` | `!expr` | 逻辑非。仅当操作数为`false`时为`true`。 |

在 C++ 中，逻辑运算符通常用于决策制定。 为了进一步了解逻辑运算符，让我们来看以下示例，

```cpp
Suppose,
a = 5
b = 8

Then,

(a > 3) && (b > 5) evaluates to true
(a > 3)  && (b < 5) evaluates to false

(a > 3) || (b > 5) evaluates to true
(a > 3) || (b < 5) evaluates to true
(a < 3) || (b < 5) evaluates to false

!(a == 3) evaluates to true
!(a > 3) evaluates to false 
```

### 示例 5：逻辑运算符

```cpp
#include <iostream>
using namespace std;

int main() {
    bool result;

    result = (3 != 5) && (3 < 5);     // true
    cout << "(3 != 5) && (3 < 5) is " << result << endl;

    result = (3 == 5) && (3 < 5);    // false
    cout << "(3 == 5) && (3 < 5) is " << result << endl;

    result = (3 == 5) && (3 > 5);    // false
    cout << "(3 == 5) && (3 > 5) is " << result << endl;

    result = (3 != 5) || (3 < 5);    // true
    cout << "(3 != 5) || (3 < 5) is " << result << endl;

    result = (3 != 5) || (3 > 5);    // true
    cout << "(3 != 5) || (3 > 5) is " << result << endl;

    result = (3 == 5) || (3 > 5);    // false
    cout << "(3 == 5) || (3 > 5) is " << result << endl;

    result = !(5 == 2);    // true
    cout << "!(5 == 2) is " << result << endl;

    result = !(5 == 5);    // false
    cout << "!(5 == 5) is " << result << endl;

    return 0;
} 
```

**输出**

```cpp
(3 != 5) && (3 < 5) is 1
(3 == 5) && (3 < 5) is 0
(3 == 5) && (3 > 5) is 0
(3 != 5) || (3 < 5) is 1
(3 != 5) || (3 > 5) is 1
(3 == 5) || (3 < 5) is 0
!(5 == 2) is 1
!(5 == 5) is 0 
```

**逻辑运算符**的说明

*   `(3 != 5) && (3 < 5)`的值为 **1**，因为两个操作数`(3 != 5)`和`(3 < 5)`均为 **1**（`true`）。
*   `(3 == 5) && (3 < 5)`的值为 **0**，因为操作数`(3 == 5)`为 **0** （`false`）。
*   `(3 == 5) && (3 > 5)`的值为 **0**，因为两个操作数`(3 == 5)`和`(3 > 5)`均为 **0**（`false`）。
*   `(3 != 5) || (3 < 5)`的值为 **1**，因为两个操作数`(3 != 5)`和`(3 < 5)`均为 **1**（`true`）。
*   `(3 != 5) || (3 > 5)`的值为 **1**，因为操作数`(3 != 5)`为 **1**（`true`）。
*   `(3 == 5) || (3 > 5)`的值为 **0**，因为两个操作数`(3 == 5)`和`(3 > 5)`均为 **0**（`false`）。
*   `!(5 == 2)`的值为 **1**，因为操作数`(5 == 2)`为 **0**（`false`）。
*   `!(5 == 5)`的值为 **0**，因为操作数`(5 == 5)`为 **1**（`true`）。

* * *

## 5\. C++ 按位运算符

在 C++ 中，按位运算符用于对单个位执行操作。 它们只能与`char`和`int`数据类型一起使用。

| 运算符 | 描述 |
| --- | --- |
| `&` | 二进制与 |
| `&#124;` | 二进制或 |
| `^` | 二进制异或 |
| `~` | 二进制补码 |
| `<<` | 二进制左移 |
| `>>` | 二进制右移 |

要了解更多信息，请访问 [C++ 按位运算符](https://www.programiz.com/cpp-programming/bitwise-operators)。

* * *

除了上面讨论的运算符外，还有一些其他运算符，例如`sizeof`，`?`，`.`，`&`等，不能整齐地分为一种或另一种类型。 我们将在后面的教程中了解有关这些运算符的更多信息。