已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
昨天关门了。
Improve this question
考虑C语言中的以下语句
j=2 * 3 / 4 + 2.0 / 5 + 8 / 5;
如果考虑BODMAS规则进行括号:
j=(2 * (3 / 4)) + (2.0 / 5) + (8 / 5); // then j = 0
如果我们取C中运算符的优先级
j=((2 * 3) / 4) + (2.0 / 5) + (8 / 5); // then j = 2
哪个是正确的顺序?
1条答案
按热度按时间lbsnaicq1#
你误解了BODMAS(或者像我这样的美国人,PEMDAS)。它不是一次一个严格的,按顺序应用。括号内,它分组为(B)(O)(DM)(AS)。除法和乘法是 * 相同 * 的优先级(在小学算术和C运算符优先级中);同样,加法和减法的优先级是相同的。你会注意到美国的缩写甚至颠倒了D和M;这没关系,因为它们的优先级相同,但是试图把M和D放在同一个空格里会很难看,所以我们就蒙混过关了。
小学和C approach work from left to right when the operators are equal precedence,因此正确的求值顺序为: