为何Julia计算等价表达式6÷2(1+2)与6÷2*(1+2)返回不同结果?
两个表达式结果不同的核心原因是Julia对隐式乘法和显式乘法的优先级约定不同
- 针对表达式
6÷2(1+2):
Julia语法明确规定,没有显式写*的隐式乘法(即数字直接接括号的并列写法)优先级高于÷运算符,因此运算顺序如下:- 先计算括号内内容:
1+2=3 - 再计算优先级更高的隐式乘法:
2*3=6 - 最后计算除法:
6÷6=1
- 先计算括号内内容:
- 针对表达式
6÷2*(1+2):
显式写出的*运算符和÷运算符优先级完全相同,且Julia中同级算术运算符遵循左结合规则,因此运算顺序如下:- 先计算括号内内容:
1+2=3 - 按从左到右的顺序先计算除法:
6÷2=3 - 最后计算乘法:
3*3=9
- 先计算括号内内容:
这类算术题的争议本质来自不同使用场景对隐式乘法优先级的约定差异:部分学术场景、旧版教材会约定隐式乘法优先级高于普通乘除,也有规范约定隐式乘法和普通乘法优先级完全一致,才会出现同一表达式不同计算结果的情况。
内容的提问来源于stack exchange,提问作者user17233545
相关产品推荐
相关产品推荐

