gpt4 book ai didi

operator-precedence - 为什么语言具有运算符优先级?

转载 作者:行者123 更新时间:2023-12-01 07:40:20 26 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8 年前关闭。




为什么不简单地评估从左到右?有人可以解释优先级如何使代码更具可读性吗?对我来说,它似乎需要更多的思考和更多的错误可能性。爱因斯坦说:“一切都应该尽可能简单,但不能更简单。”我猜他不是程序员。

最佳答案

因为在数学中,在任何计算机语言发明之前,都存在运算符优先级,例如

2 + 5 * 3 = 17 (and not 21)

一种没有更高优先级的语言 *运算符比 +运算符(operator)会产生混淆。

另一个来自 C++ 的例子:
std::cout << 7 * 8 << std::endl;

如果 *运算符没有优先级高于 <<运算符,这不会编译:
  • std::cout << 7将首先评估,产生 std::cout结果(具有会打印 7 的副作用)
  • 那么人们会想要评估 std::cout * 8这 -- 除非有人定义了一个非常奇怪的操作符 *用于乘以 outputstream由整数 -- 未定义。

  • 运算符优先级允许不必在“常识范围内”放置不必要的括号(尽管我同意在某些情况下人们会引入错误,因为他们不知道实际的优先级)

    现在你可能会问:为什么数学有运算符优先级? This wikipedia article提到了一些历史事实和链接到 a discussion forum .对我来说,一个重要的论点是在编写多项式时,例如
    ax^2 + bx + c 

    如果没有运算符优先级,则必须将它们写为:
    (a(x^2)) + (bx) + c

    关于operator-precedence - 为什么语言具有运算符优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154700/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com