运算符是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语言编程的核心组成部分。通过本文的学习,你应该掌握:
- 算术运算符:基本数学运算的实现
- 赋值运算符:变量值的设置和更新
- 比较运算符:条件判断的基础
- 逻辑运算符:复杂条件的组合
- 位运算符:底层数据操作
- 运算符优先级:表达式求值的规则
在实际编程中,要注意运算符的优先级,合理使用括号来明确表达式的含义,避免常见的错误如赋值与比较的混淆。掌握这些知识将为后续学习控制结构和函数打下坚实的基础。