C++常用运算符 & 表达式
常用 C++运算符 详解表
说明: 表格按优先级从高到低排序(优先级 1 为最高)。同一行内的运算符具有相同优先级,结合性决定了求值顺序。
| 优先级 | 运算符 | 名称/描述 | 用法示例 | 结 合 性 |
|---|---|---|---|---|
| 16 | = | 赋值 | a = 5 | |
| 5 | a*b a/b a%b | 乘 / 除 / 取模 | 5 * 3, 10 / 2, 11 % 3 | 从左到右 |
| 6 | a+b a-b | 加 / 减 | 5 + 3, 10 - 2 | 从左到右 |
| 2 | a++ a-- | 后置自增 / 自减 | a++, b-- | 从左到右 |
| 3 | ++a --a | 前置自增 / 自减 | ++a, --b | 从右到左 |
| 3 | +a -a | 一元正号 / 负号 | -x, +y | |
| 3 | ! ~ | 逻辑非 / 按位取反 | !flag, ~bits | |
| 9 | < <= | 关系运算符:小于 / 小于等于 | a < b, x <= 10 | 从左到右 |
| 9 | > >= | 关系运算符:大于 / 大于等于 | a > b, x >= 10 | 从左到右 |
| 10 | == != | 关系运算符:等于 / 不等于 | a == b, x != nullptr | 从左到右 |
| 14 | && | 逻辑与 (短路求值) | cond1 && cond2 | 从左到右 |
| 15 | || | 逻辑或 (短路求值) | cond1 || cond2 | 从左到右 |
| 16 | ? : | 三元条件运算符 | condition ? expr1 : expr2 | 从右到左 |
| 16 | += -= *= /= %= | 复合赋值运算符 | a += 5 (等价于 a = a + 5) | |
| 17 | , | 逗号运算符 (顺序求值) | i=0, j=0, ++i (返回最后一个表达式的值) | 从左到右 |
补充说明表:特殊运算符用法
| 运算符 | 名称/描述 | 详细说明与注意事项 |
|---|---|---|
a % b | 取模 (Modulus) | 返回除法后的余数。操作数必须是整数类型。结果的符号与 C++ 实现相关,通常与被除数 (a) 相同。 |
&& || | 逻辑与/或 (Logical AND/OR) | 短路求值 (Short-circuit evaluation):&& 左边为假则不计算右边;|| 左边为真则不计算右边。 |
表示式
表达式的定义
表达式 (Expression): 是由变量、常量、运算符、函数调用等组成的,可以计算出一个值的代码片段。
例如:a + b, x > 5, func(), i++, (x + y) * z
思考:
1、 int a =1, b=2, c=3;, 计算下面的表达式的值:
1. a + b + c
A. 6
B. 5
C. 4
D. 7
解析: 1 + 2 + 3 =6
参考答案:A
2. a + b * c
A. 6
B. 9
C. 7
D. 8
解析: 1 + 2 * 3 = 1 + 6 = 7,注意乘法优先级比加法高
参考答案:C
3. (a + b) + c
A. 6
B. 5
C. 4
D. 7
解析: (1 + 2) + 3 = 6
参考答案:A
4. (a + b) * c
A. 6
B. 9
C. 4
D. 10
解析: (1 + 2) * 3 = 9
参考答案:B
5. a + b / c
A. 2
B. 1
C. 1.6666666666666667
D. 0
解析: 1 + (2/3) = 1 + 0 = 1
参考答案:B
6. (a + b) / c
A. 0
B. 2
C. 3
D. 1
解析: (1 + 2) / 3 = 3 / 3 = 1
参考答案:D
7. a++ + (b / c)
A. 2
B. 3
C. 1
D. 4
解析: (1) + (2 / 3) = 1 + 0 = 1
参考答案:C
8. ++a + (c / b)
A. 3
B. 2
C. 3.5
D. 2.5
解析: (2) + (3 / 2) = 2 + 1 = 3
参考答案:A
9. a++ + c % b
A. 3
B. 2
C. 3.5
D. 2.5
解析: (1) + (3 % 2 ) = 1 + 1 = 2
参考答案:B
10. 下面哪个表达式的值等于0?
A. ++c > b + a * 1;
B. c++ <= (b + a) ;
C. x = (++c > b) + a;
D. c++ > a + b * 1;
解析:
++c > b + a * 1 ==> (++c) > (b+a) ==> 4 > 3 == 1;
c++ <= (b + a) ==> (c++) <= (b+a) ==> 3 <= (2+1) ==> 1;
x=(++c > b) + a ==> x = (4 > 2) + 1 ==> x = 1 + 1 ==> x = 2
c++ > a + b * 1 ==> (c++) > (a+b) ==> 3 > 3 == 0;
参考答案:D