c – 括号是否可以覆盖表达式的评估顺序?

c – 括号是否可以覆盖表达式的评估顺序?,第1张

概述参见英文答案 > Operator Precedence vs Order of Evaluation                                    6个 对运算符和 *** 作数进行分组和评估顺序是C中表达的两个重要概念. 分组 对于具有多个运算符的表达式,与特定运算符分组的 *** 作数如何由运算符的优先级和关联性决定,并且可能取决于求值的顺序. 订购 在C中,只有4个运算符具有指定的 参见英文答案 > Operator Precedence vs Order of Evaluation                                    6个
对运算符和 *** 作数进行分组和评估顺序是C中表达的两个重要概念.

分组

对于具有多个运算符的表达式,与特定运算符分组的 *** 作数如何由运算符的优先级和关联性决定,并且可能取决于求值的顺序.

订购

在C中,只有4个运算符具有指定的计算顺序(逻辑AND,逻辑OR,条件和逗号运算符).对于其他 *** 作符,未指定评估订单.

括弧

括号可以覆盖优先级和关联性,因此可以指定复合表达式的分组.

然而,Peter Gottschling的book声称括号可以改变评估的顺序.我个人对此表示怀疑;我认为这是一个错误!在下面的引文的示例中,括号不会告诉首先评估x,y和z的哪个表达式,哪个表示稍后,哪个表示最后一个.它只将表达式y z分组为*运算符的左 *** 作数.

An Expression surrounded by parentheses is an Expression as well,
e.g.,(x + y). As this grouPing by parentheses precedes all operators,
we can change the order of evaluation to suit our needs: x * (y + z)
computes the addition first. 07002

括号可以覆盖表达式的评估顺序吗?

解决方法 引用的句子措辞不力.作者并不是说评价顺序发生了变化,甚至没有说明;我认为“秩序”这个词的意思是人类如何阅读表达(即优先权).

当然,如果三个变量是独立的并且读取它们没有副作用,那么“似乎”规则使得未指定的顺序无关紧要,因为它不会改变表达式的值.

@H_403_58@ 总结

以上是内存溢出为你收集整理的c – 括号是否可以覆盖表达式的评估顺序?全部内容,希望文章能够帮你解决c – 括号是否可以覆盖表达式的评估顺序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1229053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存