Unix bc 命令和操作顺序

3
我遇到了一个关于基本的Unix“bc”命令在Mac上出现的奇怪问题,我想确认一下我是否正确理解了它。从手册中可以看到,它尊重运算顺序,这是我从学校时代记得的“乘除加减”(先乘除,后加减)。
当我在bc中计算以下字符串时,我得到了一个意外的值。
5/2+4+6-8*4+5*7+8
23

然而,如果我按照之前所述的操作顺序进行括号分组,结果将会不同:

(((5/2)+(4+6))-((8*4)+((5*7)+8)))
-63

我是否对bc命令或数学有一些基本的误解?

1
你的括号是错误的,应该是 (5/2)+4+6-(84)+(57)+8。减号是用于 8*4 的乘积,而不是到结尾... - Jean-Baptiste Yunès
1个回答

2
我们知道x-y+z并不等于x-(y+z)。因此,你期望5/2+4+6-8*4+5*7+8等于(((5/2)+(4+6))-((8*4)+((5*7)+8)))是错误的。另外,你需要学习一下运算符优先级和除法的截断。例如,5/2虽然等于2.5,但被截断为2。 因此,5/2+4+6-8*4+5*7+8 = 2+4+6-32+35+8 = 23。 希望这有所帮助。

谢谢 - 我太过于字面理解 "my dear aunt sally" 规则了... 我现在想到了它应该是 "(my dear) (aunt sally)"。 - infomofo
@infomofo,欢迎您。确切地说,*和/具有相同的优先级,+和-也具有相同的优先级。 - Nagabhushan Baddi
在相同的优先级内,你从左到右进行。 - Teepeemm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接