问题标签 [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.
c - 复合语句是 C 中的左值(或右值)吗?
当我检查container_of
Linux Kernel 中宏的定义时,我看到一个复合语句作为宏定义,
但是,在我看来,不清楚的问题是哪个语句被视为右值。显然最后一条语句的结果被用作右值,但为什么呢?
例如,下面的代码示例在 C 中是否合法?
复合语句中变量的赋值规则是什么?
c# - C# 复合赋值(例如 +=、-= 等)“例外”
我正在读一本关于 C# 的书,其中有关于复合赋值的内容(例如 +=、-=、*=、/=、<<=、>>=):
这个规则的一个微妙的例外是事件,我们将在第 4 章中描述:这里的 += 和 -= 运算符被特殊处理并映射到事件的添加和删除访问器。
谁能用简单的英语解释一下这意味着什么?我还没到第四章。
java - Java 布尔值 |= 运算符
最近我看到一个使用这个的代码:
有趣的部分是在布尔原始类型上创建的 |=(类似二进制)运算符。
令我惊讶的是 |= 存在于布尔值,就好像它是整数类型一样,并在 Java 规范中搜索了这个运算符,但找不到任何东西。
如果左值已经为真,我会很好奇是否评估右操作数。
有人可以指出我的Java规范吗?
c++ - C++中“+=”的含义和名称是什么?
我对 C++ 相当陌生,我一直在阅读和编写一些自己的代码。我不时看到这些运营商,如果那是正确的词吗?
所以我的问题是:它们是什么意思/做什么,它们叫什么?
为了进一步参考,我想知道它们叫什么,以便我可以轻松查找它(例如,简单地搜索“+=”一无所获)。
编辑:对于其他不知道含义的人(或者在我的情况下知道这些名称),我发现这个维基百科链接对其他人来说可能会派上用场:http ://en.wikipedia.org/wiki/Operators_in_C_and_C% 2B%2B
c++ - 使用复合赋值的结果作为左值
我很惊讶这有效:
结果是 8,这就是程序员试图达到的结果。但我认为赋值运算符返回了一个右值——你怎么能把它赋值给一个的结果?
language-agnostic - 复合赋值运算符,如果值被修改(同时)会发生什么?
考虑以下伪代码(与语言无关):
当函数在求值的过程中f
发生变化y
(即v
)时v += f(v)
,“冻结”的原始值是否v
变为v
“丢失”?
c - 表达式a^=b^=a^=b中有序列点,还是未定义?
交换两个整数变量而不是使用临时存储的所谓“聪明”(但实际上效率低下)的方式通常涉及这一行:
但我想知道,复合赋值运算符^=
不是序列点,是吗?这是否意味着它实际上是未定义的行为?
java - 表达式中的 Java 复合赋值运算符优先级
当我尝试执行此代码时,以下代码的输出被声明为“6”。
当我试图思考这个问题时,表达式“k += 3 + ++k; 应该被评估为 k = k + (3 + ++k); 但在这种情况下,输出应该是 7。看起来就像它被评估为 k = k + 3 + ++k; 结果为 6。
有人可以解释一下为什么表达式被评估为 "k + 3 + ++k" 而不是 "k + (3 + ++k); 吗?
}
lua - Lua运算符,为什么不定义+=、-=等?
这是一个我已经有一段时间有点恼火的问题,只是一直没有时间去寻找答案。
但是我想我至少可以问这个问题,也许有人可以解释一下。
基本上,我使用过的许多语言都使用语法糖来编写(使用来自 C++ 的语法):
而在 lua 中,+=
没有定义,所以我不得不写a=a+3
,这又是关于语法糖的。当使用更“有意义”的变量名时,例如:bleed_damage_over_time
或者写起来变得乏味的东西:
代替:
因此,如果您没有好的解决方案,我想知道如何解决这个问题,在这种情况下,我当然有兴趣听到它;而是为什么lua没有实现这个语法糖。
c++ - bool a |= mayRun(); 的右手表达式是什么时候?被执行?
假设代码片段
在什么情况下执行 mayRun()?
所有的解释都告诉我,这
a |= b;
相当于
a = a | b;
但它不能与示例
arr[i++] |= b;
所示的相同。