理解C语言运算符优先级与结合性:清晰指南
运算符优先级
运算符优先级决定表达式中多个运算符时哪个先执行。
考虑示例:
int x = 5 - 17 * 6;
C中*优先级高于-和=。故17 * 6先求值。接着因-优先级高于=,求含-表达式。
下表为运算符优先级由高到低表。结合性属性稍后讨论。
运算符优先级与结合性表
| 运算符 | 含义 | 结合性 |
|---|---|---|
| ()[] -> . | 函数调用 数组元素引用 间接成员选择 直接成员选择 | 左到右 |
| !~ + - ++ -- & * sizeof (type) | 逻辑非 位补码 一元加 一元减 自增 自减 取地址 指针引用 返回对象大小 类型转换 | 右到左 |
| * / % | 乘 除 取余 | 左到右 |
| + - | 二元加(加法) 二元减(减法) | 左到右 |
| << >> | 左移 右移 | 左到右 |
| < <= > >= | 小于 小于等于 大于 大于等于 | 左到右 |
| == != | 等于 不等于 | 左到右 |
| & | 位与 | 左到右 |
| ^ | 位异或 | 左到右 |
| | | 位或 | 左到右 |
| && | 逻辑与 | 左到右 |
| || | 逻辑或 | 左到右 |
| ?: | 条件运算符 | 右到左 |
| = *=/ /= %= += -= &= ^= |= <<= >>= | 简单赋值 赋乘积 赋商 赋余 赋和 赋差 赋位与 赋位异或 赋位或 赋左移 赋右移 | 右到左 |
| , | 表达式分隔符 | 左到右 |
运算符结合性
运算符结合性决定表达式求值方向。例如:
b = a;
此处a值赋给b,而非反向。因=运算符结合性从右到左。
若两同优先级运算符同时存在,结合性决定执行方向。
考虑示例:
1 == 2 != 3
此处==和!=优先级相同。结合性左到右。故1 == 2先执行。
上表达式等价于:
(1 == 2) != 3
注意: 语句有多运算符时,可用括号()提高代码可读性。
目录
C语言
- 掌握 C++ std::list:语法、函数与实战示例
- 理解 C# 访问修饰符:public、private、protected、internal 等完全指南
- C# 接口完全指南:定义契约、实现多态与解耦设计
- 精通 C++ 多线程编程:高效并发开发实战
- 掌握 C# 继承:概念、类型与实战代码完全指南
- 掌握 C 语言字符指针与函数用法
- Guru99:综合在线教程与商业软件评测平台
- C 语言循环控制完全指南:while、for、do-while 与循环控制语句
- C++ std::vector 完全指南:动态数组、迭代器、修改器与实战示例
- 掌握 C# 类型转换:隐式、显式、Parse 与 Convert 全方位指南
- C 语言运算符完全指南:算术、关系、逻辑、位运算等
- C++ 指针深度解析:从入门到实战