问题标签 [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 回答
1534 浏览

c - 复合语句是 C 中的左值(或右值)吗?

当我检查container_ofLinux Kernel 中宏的定义时,我看到一个复合语句作为宏定义,

但是,在我看来,不清楚的问题是哪个语句被视为右值。显然最后一条语句的结果被用作右值,但为什么呢?

例如,下面的代码示例在 C 中是否合法?

复合语句中变量的赋值规则是什么?

0 投票
3 回答
166 浏览

c# - C# 复合赋值(例如 +=、-= 等)“例外”

我正在读一本关于 C# 的书,其中有关于复合赋值的内容(例如 +=、-=、*=、/=、<<=、>>=):

这个规则的一个微妙的例外是事件,我们将在第 4 章中描述:这里的 += 和 -= 运算符被特殊处理并映射到事件的添加和删除访问器。

谁能用简单的英语解释一下这意味着什么?我还没到第四章。

0 投票
5 回答
15381 浏览

java - Java 布尔值 |= 运算符

最近我看到一个使用这个的代码:

有趣的部分是在布尔原始类型上创建的 |=(类似二进制)运算符。

令我惊讶的是 |= 存在于布尔值,就好像它是整数类型一样,并在 Java 规范中搜索了这个运算符,但找不到任何东西。

如果左值已经为真,我会很好奇是否评估右操作数。

有人可以指出我的Java规范吗?

0 投票
2 回答
2392 浏览

c++ - C++中“+=”的含义和名称是什么?

我对 C++ 相当陌生,我一直在阅读和编写一些自己的代码。我不时看到这些运营商,如果那是正确的词吗?

所以我的问题是:它们是什么意思/做什么,它们叫什么?

为了进一步参考,我想知道它们叫什么,以便我可以轻松查找它(例如,简单地搜索“+=”一无所获)。

编辑:对于其他不知道含义的人(或者在我的情况下知道这些名称),我发现这个维基百科链接对其他人来说可能会派上用场:http ://en.wikipedia.org/wiki/Operators_in_C_and_C% 2B%2B

0 投票
3 回答
1116 浏览

c++ - 使用复合赋值的结果作为左值

我很惊讶这有效:

结果是 8,这就是程序员试图达到的结果。但我认为赋值运算符返回了一个右值——你怎么能把它赋值给一个的结果?

0 投票
1 回答
49 浏览

language-agnostic - 复合赋值运算符,如果值被修改(同时)会发生什么?

考虑以下伪代码(与语言无关):

当函数在求值的过程中f发生变化y(即v)时v += f(v),“冻结”的原始值是否v变为v“丢失”?

0 投票
4 回答
659 浏览

c - 表达式a^=b^=a^=b中有序列点,还是未定义?

交换两个整数变量而不是使用临时存储的所谓“聪明”(但实际上效率低下)的方式通常涉及这一行:

但我想知道,复合赋值运算符^=不是序列点,是吗?这是否意味着它实际上是未定义的行为?

0 投票
2 回答
604 浏览

java - 表达式中的 Java 复合赋值运算符优先级

当我尝试执行此代码时,以下代码的输出被声明为“6”。

当我试图思考这个问题时,表达式“k += 3 + ++k; 应该被评估为 k = k + (3 + ++k); 但在这种情况下,输出应该是 7。看起来就像它被评估为 k = k + 3 + ++k; 结果为 6。

有人可以解释一下为什么表达式被评估为 "k + 3 + ++k" 而不是 "k + (3 + ++k); 吗?

}

0 投票
3 回答
45662 浏览

lua - Lua运算符,为什么不定义+=、-=等?

这是一个我已经有一段时间有点恼火的问题,只是一直没有时间去寻找答案。

但是我想我至少可以问这个问题,也许有人可以解释一下。

基本上,我使用过的许多语言都使用语法糖来编写(使用来自 C++ 的语法):

而在 lua 中,+=没有定义,所以我不得不写a=a+3,这又是关于语法糖的。当使用更“有意义”的变量名时,例如:bleed_damage_over_time或者写起来变得乏味的东西:

代替:

因此,如果您没有好的解决方案,我想知道如何解决这个问题,在这种情况下,我当然有兴趣听到它;而是为什么lua没有实现这个语法糖。

0 投票
3 回答
102 浏览

c++ - bool a |= mayRun(); 的右手表达式是什么时候?被执行?

假设代码片段

在什么情况下执行 mayRun()?

所有的解释都告诉我,这 a |= b; 相当于 a = a | b;

但它不能与示例 arr[i++] |= b; 所示的相同。