c - 运算符优先级背后的逻辑

标签 c operators operator-precedence

编译器遵循运算符之间特定优先级的动机是什么。为什么不只是按照代码编写的顺序来设计呢?我的意思是,为什么 "a + b * c" 被视为 "(b * c) + a" ?为什么不遵循与它的书写顺序相同的顺序呢?每次我尝试学习编程语言时,我都很难记住优先级/优先级。有没有简单的方法可以掌握它?

最佳答案

实际上,编写解析器/编译器会更容易,而不必处理运算符优先级。在这种情况下,只需从左到右执行算术即可。

示例: 10+20*30 => (10+20)*30 => 30*30 => 900

那么,为什么要处理运算符优先级呢? 它来自数学(算术),只是人们选择遵循的一种实践。这不应该是一个麻烦,因为所有语言都具有大致相同的运算符优先级,您不需要学习每种语言的运算符过程。更好的是,方括号或圆括号具有最高优先级,因此如果您不确定,可以使用它们。

您可能想了解为什么 BODMAS规则是首先创建的。

关于c - 运算符优先级背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43204469/

相关文章:

c - gcc:错误:/e:/源代码/C/Practice/helloWorld.c:参数无效

c - 如何模拟 EOF?

c - 如何不使用++ 运算符直接移动到指针位置?

c++ - 后增量运算符的评估顺序是什么?

c++ - 作为其他类成员的依赖类

c++ - 为什么很多 OpenCL 示例是用 C++ 而不是用 C 编写的?

c - 用txt文件填充循环双链表

python - python 中是否有适用于数组的二元或运算符?

java - 在 switch 中使用关系运算符

c++ - 一元否定运算符会出现在函数调用之前吗?