gpt4 book ai didi

c - 最里面的括号是在 C 中首先计算的吗?

转载 作者:行者123 更新时间:2023-12-03 18:32:03 26 4
gpt4 key购买 nike

考虑以下有关此表达式的问题:(a+b)+ (c +(d+e)) +(f+g)在 C 中,我们使用优先级和结合性来决定应该首先评估哪个运算符,如果有多个运算符具有相同的优先级,那么它们应该以什么顺序关联。
我的问题是:

  • 是 (d+e) 首先由编译器评估,因为它是表达式中最内层的嵌套括号?
  • 如果是这样,结合性和优先级是否以某种方式建议最内层括号评估应该首先进行?
  • 我强烈认为它没有,如果没有,那么为什么编译器甚至决定首先评估最里面的括号?因为从左到右并在同一级别评估括号对我来说似乎更合乎逻辑。
  • 最佳答案

    您将运算符优先级与评估顺序混淆了。这些是不同但相关的术语。见 What is the difference between operator precedence and order of evaluation?
    具体来说:

    1. Do (d+e) is evaluated first by compiler as it is innermost nested parenthesis in the expression?

    这取决于 +(加性)运算符的计算顺序,仅此而已。 + 的顺序是未指定的(就像大多数运算符一样),我们无法知道它,也不应该依赖它。编译器可以随心所欲,不需要告诉您(文档)他们如何以及何时选择某个订单。
    1. If so does associativity and precedence somehow explains innermost parenthesis evaluation should be done first?

    不,这与运算符优先级无关。
    1. I strongly feel that it doesn't and if it don't then why we decided to evaluate innermost parenthesis first, because going from left to right and evaluating parenthesis at same level seems much logical to me

    见 1)

    关于c - 最里面的括号是在 C 中首先计算的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65791451/

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