运算符优先级
求值顺序
运算符优先级 是 CoddyKit 上的免费 C Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C Academy 课程共包含 4 节课。
为什么优先级很重要
当一个表达式包含多个运算符时,优先级决定先执行哪个运算符。它与普通数学规则相似:先乘除,后加减。
#include <stdio.h>
int main(void) {
printf("%d\n", 2 + 3 * 4);
return 0;
}括号可以覆盖默认优先级
括号可以强制规定求值顺序。请使用括号明确表达意图,并覆盖默认规则。
#include <stdio.h>
int main(void) {
printf("%d\n", (2 + 3) * 4);
return 0;
}算术运算符优先级
在算术运算符中:* / % 的绑定程度高于 + -。优先级高的运算符会先执行。
#include <stdio.h>
int main(void) {
int r = 10 - 2 * 3;
printf("r = %d\n", r);
return 0;
}结合性
当运算符具有相同的优先级时,结合性决定计算方向。大多数算术运算从左到右进行。
#include <stdio.h>
int main(void) {
int r = 20 / 4 / 2;
printf("r = %d\n", r);
return 0;
}赋值的右结合性
赋值运算从右到左结合。因此,a = b = 5 会先将 5 赋给 b,再赋给 a。
#include <stdio.h>
int main(void) {
int a, b;
a = b = 5;
printf("a = %d, b = %d\n", a, b);
return 0;
}比较运算与算术运算
算术运算的绑定程度高于关系运算符,因此 a + b > c 会先计算 a + b。
#include <stdio.h>
int main(void) {
int a = 2, b = 3, c = 4;
printf("%d\n", a + b > c);
return 0;
}关系运算与逻辑运算
关系运算符的绑定程度高于 &&,而 && 的绑定程度高于 ||。
#include <stdio.h>
int main(void) {
int x = 5;
if (x > 0 && x < 10)
printf("single digit positive\n");
return 0;
}一元运算先于二元运算
像 ! 和一元 - 这样的运算符绑定得非常紧,会先于二元运算符应用。
#include <stdio.h>
int main(void) {
int x = 0;
printf("%d\n", !x + 1);
return 0;
}一个容易混淆的表达式
如果没有括号,这个表达式会混合多个优先级。请仔细跟踪其计算过程。
#include <stdio.h>
int main(void) {
int r = 2 + 3 * 4 > 10 && 1;
printf("r = %d\n", r);
return 0;
}有疑问时加上括号
优秀的 C 代码会大量使用括号。它们不会增加运行时开销,还能避免隐蔽的错误。
#include <stdio.h>
int main(void) {
int a = 1, b = 2, c = 3;
if ((a < b) && (b < c))
printf("ascending\n");
return 0;
}实践中的优先级
借助优先级,我们可以在不添加多余括号的情况下写出简洁的公式。
#include <stdio.h>
int main(void) {
int base = 10, rate = 2, hours = 3;
int pay = base + rate * hours;
printf("pay = %d\n", pay);
return 0;
}快速检查
请检验您对运算符优先级的理解。
回顾:运算符优先级
您已经了解了 C 语言如何安排运算符的计算顺序。
* / %先于+ -- 算术运算先于关系运算,关系运算先于逻辑运算
- 大多数运算符是左结合的,赋值运算符是右结合的
- 一元运算符的绑定程度很高
- 括号可以明确表达意图
常见问题解答
「运算符优先级」课时是免费的吗?
是的 — 「运算符优先级」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C Academy 课程的其余内容,请升级到 CoddyKit PRO。 C Academy 课程共包含 4 节课。
「运算符优先级」这节课中我会学到什么?
求值顺序 你通过在浏览器中直接运行的动手代码来练习 C Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「运算符优先级」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C Academy 课中编写并运行代码吗?
能。每节 C Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 算术运算符
- 关系运算符与逻辑运算符
- 赋值与递增
- 运算符优先级