编程中的运算符、数组及高精度计算
立即解锁
发布时间: 2025-08-14 01:38:28 阅读量: 7 订阅数: 12 


Linux命令行完全入门指南
### 编程中的运算符、数组及高精度计算
#### 1. 自增和自减运算符
自增(`++`)和自减(`--`)运算符在编程中十分常见,它们可以出现在参数的前面或后面。虽然这两种位置都能让参数的值加 1 或减 1,但存在细微差别。
- **前置运算符**:若运算符放在参数前面,参数会先进行自增或自减操作,然后再返回该参数的值。例如:
```bash
[me@linuxbox ~]$ foo=1
[me@linuxbox ~]$ echo $((++foo))
2
[me@linuxbox ~]$ echo $foo
2
```
- **后置运算符**:若运算符放在参数后面,参数会先返回当前值,然后再进行自增或自减操作。例如:
```bash
[me@linuxbox ~]$ foo=1
[me@linuxbox ~]$ echo $((foo++))
1
[me@linuxbox ~]$ echo $foo
2
```
在大多数 shell 应用中,前置运算符更为实用。这两个运算符常与循环结合使用,以下是一个改进后的取模脚本示例:
```bash
#!/bin/bash
# modulo2 : demonstrate the modulo operator
for ((i = 0; i <= 20; ++i )); do
if (((i % 5) == 0 )); then
printf "<%d> " $i
else
printf "%d " $i
fi
done
printf "\n"
```
#### 2. 位运算符
位运算符以一种特殊的方式操作数字,它们在二进制位级别上工作,常用于一些底层任务,比如设置或读取位标志。常见的位运算符如下表所示:
| 运算符 | 描述 |
| ---- | ---- |
| `~` | 按位取反,对一个数的所有位取反 |
| `<<` | 左移运算符,将一个数的所有位向左移动 |
| `>>` | 右移运算符,将一个数的所有位向右移动 |
| `&` | 按位与,对两个数的所有位进行与运算 |
| `|` | 按位或,对两个数的所有位进行或运算 |
| `^` | 按位异或,对两个数的所有位进行异或运算 |
除了按位取反运算符,其他位运算符都有对应的赋值运算符(如 `<<=`)。以下是使用左移运算符生成 2 的幂列表的示例:
```bash
[me@linuxbox ~]$ for ((i=0;i<8;++i)); do echo $((1<<i)); done
1
2
4
8
16
32
64
128
```
#### 3. 逻辑运算符
`(( ))` 复合命令支持多种比较运算符,还有一些可用于逻辑评估的运算符,完整列表如下:
| 运算符 | 描述 |
| ---- | ---- |
| `<=` | 小于或等于 |
| `>=` | 大于或等于 |
| `<` | 小于 |
| `>` | 大于 |
| `==` | 等于 |
| `!=` | 不等于 |
| `&&` | 逻辑与 |
| `||` | 逻辑或 |
| `expr1?expr2:expr3` | 三元运算符,若 `expr1` 非零(算术真)则执行 `expr2`,否则执行 `expr3` |
在逻辑运算中,表达式遵循算术逻辑规则,值为 0 的表达式被视为假,非零表达式被视为真。`(( ))` 复合命令会将结果映射到 shell 的正常退出码。例如:
```bash
[me@linuxbox ~]$ if ((1)); then echo "true"; else echo "false"; fi
true
[me@linuxbox ~]$ if ((0)); then echo "true"; else echo "false"; fi
false
```
三元运算符是比较特殊的逻辑运算符,它类似于 C 语言中的三元运算符,可作为一种 `if/then/else` 语句使用。它作用于三个算术表达式(字符串无效),若第一个表达式为真(非零),则执行第二个表达式,否则执行第三个表达式。例如:
```bash
[me@linuxbox ~]$ a=0
[me@linuxbox ~]$ ((a<1?++a:--a))
[me@linuxbox ~]$ echo $a
1
[me@linuxbox ~]$ ((a<1?++a:--a))
[me@linuxbox ~]$ echo $a
0
```
需要注意的是,在表达式中进行赋值操作并不直接,尝试这样做时,bash 会报错。可以通过在赋值表达式周围加上括号来解决这个问题。以下是一个使用算术运算符生成简单数字表的脚本示例:
```bash
#!/bin/bash
# arith-loop: script to demonstrate arithmetic operators
finished=0
a=0
printf "a\ta**2\ta**3\n"
printf "=\t====\t====\n"
until ((finished)); do
b=$((a**2))
c=$((a**3))
```
0
0
复制全文
相关推荐










