【发布时间】:2015-08-29 15:15:00
【问题描述】:
我正在阅读《Java Deitel & Deitel 7th Edition 中的编程》,我看到了运算符的优先级,但我有些害怕。
作者说,当有一个数学典型表达式,其中有相等优先级的运算符时,运算从左到右运行。例如:
System.out.println (a + b + c - d);
从这个意义上说,操作是从左到右执行的,然后我在互联网上研究,我发现“=”运算符是从右到左运行的。例如:
int x;
x = 4 * 4 * 4% 2;
在我进一步调查并编写代码之前,所有税收都很好,我突然想到,我写了这个例外:
System.out.println ((4 * 4) + (8 * 8) * (4 * 4) - 16/4);
我的问题是,如果书中说加法和减法的优先级低于其他运算符,如果我将典型表达式的值相加怎么办?让我解释一下:
当我输入(4 * 4) + (8 * 8) * (4 * 4)时,我是把乘法的值加起来,然后降低运算符的优先级?
另一个问题:
如果我有一个例子如下:
System.out.println (a * b * c + d + e + f * g / h);
由于较高优先级的操作是从左到右执行的,所以当我有时间运行较高优先级时,它是否也从左到右运行?
给变量赋值时,优先级高的运算符是从右到左关联的吗?
【问题讨论】:
-
我不明白你在问什么。你问
(4 * 4) + (8 * 8) * (4 * 4) - 16/4的结果应该是什么?为什么不测试一下? -
数学运算符遵循 BEDMAS。同等优先级(如 +- 或 */)从左到右计算。
(4 * 4) + (8 * 8) * (4 * 4)将是(4 * 4) + [ (8 * 8) * (4 * 4) ][]发生在第一个4*4之后但在+之前 -
很抱歉这么说,不过你好像是通过机械翻译提出的问题,真的很难理解你在问什么。
-
我用谷歌翻译器
-
不幸的是,我认为谷歌翻译做得不是很好。例如,我认为它在 exeption 中添加了您实际上是指 expression 的位置,但即使作为母语人士,我也无法猜测其中的某些含义,因此可能可以对你潜在的困惑没有帮助