问题标签 [operator-precedence]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4630 浏览

python - Python 运算符优先级

Python 文档这样说*并且/具有相同的优先级。
我知道python中的表达式是从左到右计算的。

我可以依靠它并假设这j*j/m总是等于(j*j)/m 避免括号吗?
如果是这种情况,我可以假设这适用于具有相同优先级的运算符吗?


ps:这个问题对我的目的来说很好,我是在阅读没有括号的纯整数代码(如上面的例子)时提出的,当时这对我来说很可疑。

0 投票
3 回答
916 浏览

ruby - Ruby中的运算顺序问题

我正在初始化一个测试两个公式是否相等的类的实例。

该公式的计算值实际上是相等的:

当我创建一个新类来检查这两个实例的相等性时,我对结果有点惊讶:

RubyChem::BalanceChem 初始化方法在这里:

为什么 ruby​​ 不获取公式 1 和公式 2 的 fw 值并检查这些值的相等性?Ruby 中的操作顺序是什么,Ruby 在做什么?我可以看到我对这个问题缺乏了解。我怎样才能使这项工作?先感谢您。

0 投票
3 回答
1595 浏览

perl - 在 Perl 中列出运算符优先级

我正在阅读“Beginning Perl”一书,它给出了以下两个陈述:

第一行不打印新行,第二行打印没有新行的 1。

我对输出感到困惑。根据作者的说法,第二条语句给出了奇怪的输出,因为它就像在说:

但是,为什么第一个说法不一样呢?我认为这与打印的优先级有关。&& 的优先级高于打印,因此首先对其进行评估,然后再打印。而“and”的优先级低于 print,因此 6 > 3 将被打印,print 返回 1,然后用“and”计算。然而,这并没有真正的意义。

我已经阅读了有关列表运算符的优先级如何工作的 Perl 文档,但我仍然不理解这个示例。你们能剖析这两个语句,然后告诉我首先打印的是什么吗?您能否解释一下 Perl 文档中提到列表运算符为“左”和“右”时的含义?谢谢。


非常感谢大家的回答。我现在明白了。我确实在做cjm所说的,并认为有向左和向右的列表运算符。所以现在我明白了它的意思,我明白了整个事情。

0 投票
1 回答
253 浏览

c++ - VS2008 中“<<”和“++”的运算符优先级经过优化

我遇到了一个奇怪的 VS2008 C++ 问题,看起来运算符优先级没有得到尊重。

我的问题是这个输出是什么:

通常++优先于<<,对吧?或者被<<认为是一个函数调用,赋予它比++?更高的优先级。100% 正确的标准答案是什么?

为了检查,我创建了一个新的空项目(VS2008 控制台应用程序),只在主目录中粘贴了这段代码,结果如下:

顺便说一句,以下示例产生完全相同的结果:

并且在发布中更改优化类型也没有效果,但禁用优化会像其他配置一样输出“零 1”。

0 投票
5 回答
80 浏览

c - 类似的语法,但一个显示错误,另一个没有

大家好

我今天做了这个程序

为什么第一个显示错误而第二个没有?只需 ( ) 就可以编译一个程序。为什么?

——修罗提

0 投票
4 回答
199 浏览

c - C中的输入谜题

可能重复:
谁能解释这些未定义的行为(i = i++ + ++i,i = i++ 等……)

输出为 7 和 14

输入用户给出的是 5 输出是 7 和 13

为什么?

0 投票
4 回答
240 浏览

c - 是否有关于 gcc 中“i=i--”行为的特定文档?

再一次,我们最喜欢“i=i--”之类的问题。在 C99 中,我们有:

6.5 表达式#2:在前一个和下一个序列点之间,对象的存储值最多修改一次

70) 这一段呈现 !!undefined!! 语句表达式,例如

但是对于未定义的行为,可以有从随机输出到“以记录方式执行程序”(c99 3.4.3)的变体

所以,问题:

gcc 是否记录i=i++、i=i-- 等语句的行为?

实际代码是

0 投票
4 回答
920 浏览

javascript - JavaScript 运算符优先级逻辑让我感到困惑

我能找到的运算符优先级表是:

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence

根据表格,'>>'和'*'都是从左到右的关联,并且'>>'具有更高的优先级,所以我认为a >> b * c应该解释为(a >> b) * c 但是,我在 Firefox 中的测试(使用 Firebug)告诉我:

这让我很困惑,应该是 16 吗?

好的,我知道当优先级不清楚时我们总是应该使用括号,但是应该有一个规则或解释正在发生的事情?

0 投票
5 回答
631 浏览

c - 当 p 和 q 指向同一个对象时,“*p = ++(*q)”是否未定义?

在阅读了序列点之后,我了解到这i = ++i是未定义的。

那么这段代码怎么样:

假设 p 和 q 的初始化是否取决于某些(复杂的)条件。并且它们可能像上述情况一样指向同一个对象。会发生什么?如果未定义,我们可以使用哪些工具来检测?

编辑:如果两个指针不应该指向同一个对象,我们可以使用 C99 限制吗?是“严格”的意思吗?

0 投票
3 回答
696 浏览

c++ - c的表达式和c++的表达式的区别

该程序适用于 g++ 编译器,但不适用于 gcc。如果我写 i++++ 或 ++i++ 它在 cpp 中也不起作用。我认为 c-expression 和 c++-expression 之间存在差异。有人可以解释一下 L 值和 R 值吗?