问题标签 [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.
java - 为什么复合赋值 (+=) 在语言(Java、C++)之间存在差异?
的定义+=
在 Java 和 C++ 中似乎相同,但是它们的执行方式不同。
考虑以下 C++ 代码:
这输出:3 6 6
Java 输出中的类似代码:3 3 6
,这是供参考的代码。
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 相同。当然,编写这样的代码是非常糟糕的做法,但我仍然对解释感到好奇。
我怀疑+=
不同语言的变量评估方式的顺序是不同的,但我不知道具体如何。我在定义中遗漏了什么,如何评估复合赋值运算符?
c++ - 如何将多个数字添加到变量
我正在尝试使用+=
将多个数字添加到变量中。
我正在尝试做这样的事情:
score += var1, var2, var3
但是,我现在唯一知道该怎么做的是
pandas - 仅给定级别 0 列选择器和对齐级别 1 的新 MultiIndex 列的分配
我想将一列添加到与其他列具有相同结构的多索引列数据框的 level(0) 中,即: level(1) 索引是相同的:
虽然我可以进行正常操作并获得与 df 级别(1)对齐的单级列索引数据框:
我无法执行正常的列分配 level(0) 来创建 level(0) 列,其 level(1) 由生成的(对齐的)数据框填充:
这是怎么做到的?
c++ - 复合模如何在 C++ 中工作?
我一直在尝试创建简单的程序,将输入数字分成比索钞票。我需要的输出是
这是我的初始代码:
但我得到的输出是
所以经过一番修改后,我使用了这段代码,效果很好!
所以我的问题是,为什么使用复合模运算符是如何工作的?它与常规的模运算符有何不同?我不认为数学是问题,而是代码的处理方式。这是我学习 C++(和一般编程)的最初几周,如果能解决我的一些困惑会很好。先感谢您。
python-3.x - 如何使用具有多个返回值的python赋值运算符
我有一个 Python 函数,它接受一个参数并返回 2 个输出。我想为列表中的所有元素调用它,并组合每个调用的返回值,如下所示:
如何使用Python中的+=
,&=
和运算符将其重构为单行?reduce
谢谢
python - python中是否可以进行多个复合赋值
上述语句在 python 中执行时显示语法错误。为什么会这样?在 python 中不能进行多个复合赋值吗?
c++ - C++ 中的复合赋值
我想知道C++中复合赋值的执行流程。我遇到了一个CodeChef 问题,我正在计算 NCR mod p 值并将它们加在一起以获得最终答案:
这是由于整数溢出而发生的。
那么,复合赋值的执行顺序是怎样的呢?
比方说,如果我们有一个等式,a+=b%c
那么执行顺序是什么:
c - C 中的复合运算符 (+=) 和 &&,奇怪的值
看这段代码:
我认为应该是的输出是:
实际上,真正的输出是:
但为什么?&& 的结合性是从左到右,所以
- b = b - 1(a)(b 应该是 251)
- 左边是真的,所以:a++ (a = 0)
我的假设有问题,有人可以向我解释一下吗?
如果可以帮助 gdb 的输出(带有 a 和 b 的观察点):
c# - C# 为什么分配事件处理程序使用 += 运算符而不是 =
也许我在谷歌上搜索得不够努力,但我想在分配事件时理解语法“+=”。例如我们使用:
而不是:
为什么会这样?这里有一些数学吗?为什么要添加地址?
java - 具有赋值运算符的按位包含 OR 是否比 Java 中的典型赋值具有优势?
在查看一个或另一个 git 上的某些代码时,有时我可以看到开发人员使用按位包含 OR 复合赋值运算符 ( |=
),其中简单的赋值就足够了。不幸的是,我手头没有这个解决方案的任何代码,所以我会尽力描述它。
假设我们在java中有以下代码:
我只问尖线。为什么人们会这样做?我知道我们可以拥有非常大量的数据,数十亿或数万亿个数据进行迭代。但是尖线是否会如此显着地改变效率?如果我将其更改为简单赋值:大量数据会明显变慢found = true;
吗?
我不排除速度不是主要论点的可能性,但这对我来说似乎最有意义。
是的,我知道这段代码可以转换为方法或流,但这只是代码的简化,它会更复杂等。我们可以假设在尖线之前(甚至之前if
),有大量做一些有意义的事情的代码。请不要建议“改用流”之类的建议,因为我已经知道如何进行 java 高级。我想了解这种使用按位包含 OR 的神秘解决方案的现象。