问题标签 [compound-operator]

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 投票
5 回答
206 浏览

java - 在 Java 中自动捕获 =+ 而不是 += 的使用

我有一个可怕的习惯,那就是输入下面的内容,直到进入测试阶段才抓住它:

当然,正确的版本是

我犯了这个错误无数次。有一些代码中存在一个逃脱测试用例的错误,这并不让我感到惊讶。必须有一种方法可以系统地防止这种情况发生。有任何想法吗?

0 投票
3 回答
651 浏览

java - Java:+=等价

是:

相当于:

0 投票
3 回答
430 浏览

python - 在 python 中使用 print() 和复合运算符

以下代码在python中不起作用

虽然这段代码确实

这是为什么?

0 投票
1 回答
2446 浏览

java - x=x+3 和 x+=3 有什么区别?为什么一个需要类型转换而另一个不需要?

问题 :

0 投票
3 回答
1480 浏览

java - 为什么 i+=l 会编译,其中 i 是 int 而 l 是 long ?

我发现了Java 的 +=、-=、*=、/= 复合赋值运算符(好问题 :)),但它有一部分我不太了解。借用那个问题:

然后i = i + l;不会编译,但i += l;会编译得很好。

已接受的链接问题的答案指出:

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

这与仅评估一次的异常i += l;相同。i = (int)((i) + (l));i

Along可能(IIRC 甚至可以保证)比 a 长int,因此可以容纳更大范围的值。

鉴于这种情况很容易由于在语句执行期间的某个时间点进行必要的缩小转换而导致数据丢失(r 值表达式评估或赋值),为什么i += l;不是编译时错误或至少是警告?

0 投票
3 回答
631 浏览

programming-languages - a = b 是否有复合赋值运算符一个(其中不是可交换的)?

在许多语言中,a = a + b 可以写成 a += b 在数值运算的情况下,a + b 与 b + a 相同,因此单个复合运算符就足够了。

此外, a = a - b 可以写成 a -=b 。

但是,ab 不等于 ba。因此,复合赋值运算符不适用于 a = b - a

那么,是否有用于操作a = b op a的复合赋值运算符(其中op可以是 +、-、*、/、%,并且顺序很重要)?

[非交换运算]

0 投票
5 回答
430 浏览

c - C - 逻辑复合运算符

复合运算符 '&=' 是逻辑 AND 还是按位 AND ?

换句话说,a &= b等同于:

  • a = a & b
  • a = a && b
0 投票
3 回答
1113 浏览

java - java按位运算符和等号;复合运算符

我有点困惑:

我知道 << 是有符号的左移运算符和 | 按位包含 OR 但我对 equals 的作用感到困惑?

所以拳头v是0。所以<<没有任何作用?然后它等于 1000,但那会发生什么?

编辑:我已经编辑了标题,所以其他人可能会更好地找到这个问题:添加了“复合运算符”

0 投票
1 回答
156 浏览

c++ - C4244 关于复合加法赋值的 4 级警告,但不是关于求和和赋值的警告

在 MSVS 2005 中,以下 C 代码生成一个警告:

警告信息是:

C++ 代码也是如此。

这两种说法有什么区别?我听说,但找不到对任何 C 或 C++ 标准的任何引用,复合运算符隐式地将右侧表达式转换为左侧的类型。但是 sum-and-assignment 语句不应该做同样的事情吗?我还怀疑它与 int 提升有关,但正如我从反汇编中看到的那样,这两种情况都会发生:

此外,警告没有出现在 MSVS 2008 中,警告级别设置为 4。那么我可以认为这是 VS 2005 中的一个错误,后来修复了,还是对原始警告有一些意义?该文档在这里对我没有帮助。

0 投票
1 回答
70 浏览

typescript - 使用逻辑赋值时如何保持类型保护缩小?

以下是重现该问题的示例:

如您所见,在类型保护之后,curr正确地缩小为R | undefined. 之后,如果它丢失,我将重新分配tmpcurr默认后者为空对象。

现在,如果使用该A || A = B方法,curr逻辑 OR 的左侧将适当缩小为R | undefined. 但是,如果我使用逻辑 OR 分配来使意图更清晰,curr则推断为R | F | undefined. 这显然会导致错误,因为F不可分配给R.

curr问题是 -在第二种情况下失去收窄的原因是什么?

操场