跳到主要内容

C++常用运算符 & 表达式

常用 C++运算符 详解表

说明: 表格按优先级从高到低排序(优先级 1 为最高)。同一行内的运算符具有相同优先级,结合性决定了求值顺序。

优先级运算符名称/描述用法示例结 合 性
16=赋值a = 5
5a*b a/b a%b乘 / 除 / 取模5 * 3, 10 / 2, 11 % 3从左到右
6a+b a-b加 / 减5 + 3, 10 - 2从左到右
2a++ 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

*学习笔记

暂没有学习笔记,快来抢first blood !