问题标签 [compound-assignment]

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 投票
2 回答
103 浏览

java - 为什么复合赋值 (+=) 在语言(Java、C++)之间存在差异?

的定义+=在 Java 和 C++ 中似乎相同,但是它们的执行方式不同。

考虑以下 C++ 代码:

这输出:3 6 6

Java 输出中的类似代码:3 3 6,这是供参考的代码。

查看C++Java的文档,他们编写了类似的定义:

C++:

E1 op= E2(其中 E1 是可修改的左值表达式,E2 是右值表达式或花括号初始化列表(C++11 起))与表达式 E1 = E1 op E2 的行为完全相同,除了表达式 E1 只计算一次,并且对于不确定顺序的函数调用,它表现为单个操作

爪哇:

E1 op= E2 形式的复合赋值表达式等价于 E1 = (T) ((E1) op (E2)),其中 T 是 E1 的类型,除了 E1 只计算一次。

出于好奇,我在 Python 中检查了这个,它的输出与 Java 相同。当然,编写这样的代码是非常糟糕的做法,但我仍然对解释感到好奇。

我怀疑+=不同语言的变量评估方式的顺序是不同的,但我不知道具体如何。我在定义中遗漏了什么,如何评估复合赋值运算符?

0 投票
3 回答
141 浏览

c++ - 如何将多个数字添加到变量

我正在尝试使用+=将多个数字添加到变量中。

我正在尝试做这样的事情: score += var1, var2, var3

但是,我现在唯一知道该怎么做的是

0 投票
1 回答
15 浏览

pandas - 仅给定级别 0 列选择器和对齐级别 1 的新 MultiIndex 列的分配

我想将一列添加到与其他列具有相同结构的多索引列数据框的 level(0) 中,即: level(1) 索引是相同的:

虽然我可以进行正常操作并获得与 df 级别(1)对齐的单级列索引数据框:

我无法执行正常的列分配 level(0) 来创建 level(0) 列,其 level(1) 由生成的(对齐的)数据框填充:

这是怎么做到的?

0 投票
1 回答
136 浏览

c++ - 复合模如何在 C++ 中工作?

我一直在尝试创建简单的程序,将输入数字分成比索钞票。我需要的输出是

这是我的初始代码:

但我得到的输出是

所以经过一番修改后,我使用了这段代码,效果很好!

所以我的问题是,为什么使用复合模运算符是如何工作的?它与常规的模运算符有何不同?我不认为数学是问题,而是代码的处理方式。这是我学习 C++(和一般编程)的最初几周,如果能解决我的一些困惑会很好。先感谢您。

0 投票
2 回答
181 浏览

python-3.x - 如何使用具有多个返回值的python赋值运算符

我有一个 Python 函数,它接受一个参数并返回 2 个输出。我想为列表中的所有元素调用它,并组合每个调用的返回值,如下所示:

如何使用Python中的+=,&=​​ 和运算符将其重构为单行?reduce

谢谢

0 投票
1 回答
89 浏览

python - python中是否可以进行多个复合赋值

上述语句在 python 中执行时显示语法错误。为什么会这样?在 python 中不能进行多个复合赋值吗?

0 投票
2 回答
139 浏览

c++ - C++ 中的复合赋值

我想知道C++中复合赋值的执行流程。我遇到了一个CodeChef 问题,我正在计算 NCR mod p 值并将它们加在一起以获得最终答案:

这是由于整数溢出而发生的。

那么,复合赋值的执行顺序是怎样的呢?

比方说,如果我们有一个等式,a+=b%c那么执行顺序是什么:

0 投票
1 回答
59 浏览

c - C 中的复合运算符 (+=) 和 &&,奇怪的值

看这段代码:

我认为应该是的输出是:

实际上,真正的输出是:

但为什么?&& 的结合性是从左到右,所以

  1. b = b - 1(a)(b 应该是 251)
  2. 左边是真的,所以:a++ (a = 0)

我的假设有问题,有人可以向我解释一下吗?

如果可以帮助 gdb 的输出(带有 a 和 b 的观察点):

0 投票
1 回答
70 浏览

c# - C# 为什么分配事件处理程序使用 += 运算符而不是 =

也许我在谷歌上搜索得不够努力,但我想在分配事件时理解语法“+=”。例如我们使用:

而不是:

为什么会这样?这里有一些数学吗?为什么要添加地址?

0 投票
0 回答
25 浏览

java - 具有赋值运算符的按位包含 OR 是否比 Java 中的典型赋值具有优势?

在查看一个或另一个 git 上的某些代码时,有时我可以看到开发人员使用按位包含 OR 复合赋值运算符 ( |=),其中简单的赋值就足够了。不幸的是,我手头没有这个解决方案的任何代码,所以我会尽力描述它。

假设我们在java中有以下代码:

我只问尖线。为什么人们会这样做?我知道我们可以拥有非常大量的数据,数十亿或数万亿个数据进行迭代。但是尖线是否会如此显着地改变效率?如果我将其更改为简单赋值:大量数据会明显变慢found = true;吗?

我不排除速度不是主要论点的可能性,但这对我来说似乎最有意义。

是的,我知道这段代码可以转换为方法或流,但这只是代码的简化,它会更复杂等。我们可以假设在尖线之前(甚至之前if),有大量做一些有意义的事情的代码。请不要建议“改用流”之类的建议,因为我已经知道如何进行 java 高级。我想了解这种使用按位包含 OR 的神秘解决方案的现象。