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

考虑以下有关此表达式的问题: (a+b)+ (c +(d+e)) +(f+g)

在 C 中,我们使用优先级和结合性来决定应该首先评估哪个运算符,如果有多个运算符具有相同的优先级,那么它们应该以什么顺序关联。

我的问题是:

  1. (d+e) 是否首先由编译器评估,因为它是表达式中最内层的嵌套括号?

  2. 如果是这样,关联性和优先级是否以某种方式建议首先进行最内括号评估?

  3. 我强烈认为它没有,如果没有,那么为什么编译器甚至决定首先评估最里面的括号?因为从左到右并在同一级别评估括号对我来说似乎更合乎逻辑。

回答

您将运算符优先级与评估顺序混淆了。这些是不同但相关的术语。请参阅运算符优先级和计算顺序之间的区别是什么?

具体来说:

  1. Do (d+e) 首先由编译器评估,因为它是表达式中最内层的嵌套括号?

这取决于 +(加性)运算符的计算顺序,仅此而已。+ 的顺序是未指定的(就像大多数运算符一样),我们不知道它,也不应该依赖它。编译器可以随心所欲,不需要告诉您(文档)他们如何以及何时选择某个订单。

  1. 如果是这样,结合性和优先级是否以某种方式解释了最内层括号评估应该首先进行?

不,这与运算符优先级无关。

  1. 我强烈认为它没有,如果没有,那么为什么我们决定首先评估最里面的括号,因为从左到右并在同一级别评估括号对我来说似乎很合乎逻辑

见 1)


以上是最里面的括号是在C中首先计算的吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>