运算符是C语言中用于执行特定操作的符号,表达式则是由操作数和运算符组成的计算式。掌握各种运算符的使用方法和优先级是编写正确C程序的关键。本文将详细介绍C语言中的各类运算符及其应用。
算术运算符
算术运算符用于执行基本的数学运算。
基本算术运算符
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
+ | 加法 | 5 + 3 | 8 |
- | 减法 | 5 - 3 | 2 |
* | 乘法 | 5 * 3 | 15 |
/ | 除法 | 10 / 3 | 3(整数除法) |
% | 取模(余数) | 10 % 3 | 1 |
1 |
|
注意事项
- 整数除法:两个整数相除结果为整数,小数部分被截断
- 取模运算:只能用于整数,不能用于浮点数
- 除零错误:除数不能为零,否则程序会崩溃
赋值运算符
基本赋值运算符
1 | int x = 10; // 将10赋值给x |
复合赋值运算符
运算符 | 等价形式 | 描述 |
---|---|---|
+= | x = x + y | 加法赋值 |
-= | x = x - y | 减法赋值 |
*= | x = x * y | 乘法赋值 |
/= | x = x / y | 除法赋值 |
%= | x = x % y | 取模赋值 |
1 | int x = 10; |
自增和自减运算符
前缀和后缀形式
1 | int a = 5, b = 5; |
比较运算符
比较运算符用于比较两个值,返回1(真)或0(假)。
运算符 | 描述 | 示例 |
---|---|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
> | 大于 | a > b |
< | 小于 | a < b |
>= | 大于等于 | a >= b |
<= | 小于等于 | a <= b |
1 | int a = 10, b = 20; |
逻辑运算符
逻辑运算符用于组合或修改布尔表达式。
运算符 | 描述 | 示例 |
---|---|---|
&& | 逻辑与 | a && b |
|| | 逻辑或 | a || b |
! | 逻辑非 | !a |
1 | int a = 1, b = 0; // 1表示真,0表示假 |
短路求值
1 | int x = 0; |
位运算符
位运算符对整数的二进制位进行操作。
运算符 | 描述 | 示例 |
---|---|---|
& | 按位与 | a & b |
| | 按位或 | a | b |
^ | 按位异或 | a ^ b |
~ | 按位取反 | ~a |
<< | 左移 | a << 2 |
>> | 右移 | a >> 2 |
1 | int a = 12; // 二进制:1100 |
其他运算符
条件运算符(三元运算符)
1 | // 语法:条件 ? 表达式1 : 表达式2 |
sizeof运算符
1 | int x = 10; |
运算符优先级
运算符优先级决定了表达式中运算的执行顺序。
优先级 | 运算符 | 结合性 |
---|---|---|
1 | () [] -> . | 左到右 |
2 | ! ~ ++ – + - * & sizeof | 右到左 |
3 | * / % | 左到右 |
4 | + - | 左到右 |
5 | << >> | 左到右 |
6 | < <= > >= | 左到右 |
7 | == != | 左到右 |
8 | & | 左到右 |
9 | ^ | 左到右 |
10 | | | 左到右 |
11 | && | 左到右 |
12 | || | 左到右 |
13 | ?: | 右到左 |
14 | = += -= *= /= %= | 右到左 |
1 | // 优先级示例 |
表达式求值
复杂表达式示例
1 |
|
常见错误和注意事项
1. 赋值与比较的混淆
1 | int x = 5; |
2. 整数除法的陷阱
1 | int a = 5, b = 2; |
3. 自增自减的副作用
1 | int i = 5; |
实践练习
1 |
|
总结
运算符和表达式是C语言编程的核心组成部分。通过本文的学习,你应该掌握:
- 算术运算符:基本数学运算的实现
- 赋值运算符:变量值的设置和更新
- 比较运算符:条件判断的基础
- 逻辑运算符:复杂条件的组合
- 位运算符:底层数据操作
- 运算符优先级:表达式求值的规则
在实际编程中,要注意运算符的优先级,合理使用括号来明确表达式的含义,避免常见的错误如赋值与比较的混淆。掌握这些知识将为后续学习控制结构和函数打下坚实的基础。