doc/notebook/docs/NOI竞赛大纲/二.C++程序设计/4.基本运算.md

157 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 4. 基本运算
在编程中运算符是用于执行运算的符号C++ 提供了多种类型的运算符,涵盖从基本的加减乘除到位运算等功能。本节将系统讲解各种常见运算符。
---
## 【1】算术运算
### 概念说明
算术运算符用于执行基本的数学计算。
| 运算符 | 含义 | 示例表达式 | 结果 |
|--------|----------|------------|------------|
| `+` | 加法 | `3 + 2` | 5 |
| `-` | 减法 | `3 - 2` | 1 |
| `*` | 乘法 | `3 * 2` | 6 |
| `/` | 除法 | `5 / 2` | 2整型 |
| `//` | 整除 | `5 / 2` | 2整型 |
| `%` | 取余 | `5 % 2` | 1 |
### 示例代码C++
```cpp
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 2;
cout << "a + b = " << a + b << endl;
cout << "a - b = " << a - b << endl;
cout << "a * b = " << a * b << endl;
cout << "a / b = " << a / b << endl;
cout << "a % b = " << a % b << endl;
return 0;
}
```
---
## 【1】关系运算
### 概念说明
关系运算用于比较两个值的关系结果为布尔值true 或 false
| 运算符 | 含义 | 示例 |
|--------|------------|----------|
| `>` | 大于 | `a > b` |
| `>=` | 大于等于 | `a >= b` |
| `<` | 小于 | `a < b` |
| `<=` | 小于等于 | `a <= b` |
| `==` | 等于 | `a == b` |
| `!=` | 不等于 | `a != b` |
### 示例代码
```cpp
int a = 5, b = 3;
cout << (a > b) << endl; // 输出 1true
cout << (a == b) << endl; // 输出 0false
```
---
## 【1】逻辑运算
### 概念说明
逻辑运算符用于多个条件的组合判断。
| 运算符 | 含义 | 示例 | 说明 |
|--------|------|------------------|-------------------|
| `&&` | 与 | `a > 0 && b > 0` | 两个都为真才为真 |
| `||` | 或 | `a > 0 || b > 0` | 一个为真就为真 |
| `!` | 非 | `!(a > 0)` | 条件取反 |
### 示例代码
```cpp
bool a = true, b = false;
cout << (a && b) << endl; // 输出 0
cout << (a || b) << endl; // 输出 1
cout << (!a) << endl; // 输出 0
```
---
## 【1】变量自增与自减运算
### 运算符
| 运算符 | 含义 | 示例 |
|--------|--------------|----------|
| `++` | 自增 | `a++` |
| `--` | 自减 | `b--` |
### 前缀和后缀的区别:
- `++a`:先加后用
- `a++`:先用后加
### 示例代码
```cpp
int a = 5;
cout << ++a << endl; // 输出 6
cout << a++ << endl; // 输出 6再加变成 7
cout << a << endl; // 输出 7
```
---
## 【1】三目运算符
### 概念说明
三目运算符是一种简洁的条件表达式写法。
### 语法格式:
```cpp
condition ? value_if_true : value_if_false;
```
### 示例代码
```cpp
int a = 5, b = 10;
int max = (a > b) ? a : b;
cout << "较大值是: " << max << endl;
```
---
## 【2】位运算
### 概念说明
位运算是直接对整数的二进制位进行操作的运算。
| 运算符 | 含义 | 示例 | 说明 |
|--------|----------|-----------|---------------------------|
| `&` | 按位与 | `a & b` | 都为1才为1 |
| `|` | 按位或 | `a | b` | 有一个为1就为1 |
| `~` | 按位非 | `~a` | 1变00变1按位取反 |
| `^` | 按位异或 | `a ^ b` | 相同为0不同为1 |
| `<<` | 左移 | `a << 1` | 相当于乘2 |
| `>>` | 右移 | `a >> 1` | 相当于除2 |
### 示例代码
```cpp
int a = 5, b = 3; // 二进制: a=0101, b=0011
cout << (a & b) << endl; // 1
cout << (a | b) << endl; // 7
cout << (a ^ b) << endl; // 6
cout << (~a) << endl; // -6因为补码
cout << (a << 1) << endl; // 10
cout << (a >> 1) << endl; // 2
```
---
## 总结
- 熟练掌握算术、关系、逻辑、自增减、三目和位运算是编程的基础。
- 编程时建议使用 `括号` 明确优先级,增强代码可读性。
- 多做练习能更好地掌握各种运算符的特性。