問題タブ [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の左辺値(または右辺値)ですか?
Linuxカーネルでマクロの定義を調べたところ、container_of
複合ステートメントがマクロ定義であることがわかりました。
しかし、私の頭の中の不明確な問題は、どのステートメントが右辺値として考慮されるかということです。どうやら最後のステートメントの結果が右辺値として使用されていますが、なぜですか?
たとえば、以下のコード例はCで合法ですか?
複合ステートメントの変数の割り当てルールは何ですか?
c# - C#複合代入(例:+ =、-=など)「例外」
私はC#に関する本を読んでいますが、複合割り当てについて次のように述べています(たとえば、+ =、-=、* =、/ =、<< =、>> =):
このルールの微妙な例外は、第4章で説明するイベントの場合です。ここでの+ =および-=演算子は特別に扱われ、イベントの追加および削除されたアクセサーにマップされます。
誰もがそれが何を意味するのかを平易な英語で説明できますか?私はまだ第4章に行きません。
java - Javaブール値|=演算子
最近、私はこれを使用するコードを見ました:
興味深い部分は、ブールプリミティブ型で作成された| =(バイナリのような)演算子です。
整数型のようにブール値の|=が存在し、Java仕様でこの演算子を検索したのに驚いたのですが、見つかりませんでした。
左の値がすでに真である場合に右のオペランドが評価されるかどうか知りたいです。
誰かが私にこれのJava仕様を教えてもらえますか?
c++ - 複合代入の結果を左辺値として使用する
これが機能することに驚いています:
結果は 8 で、プログラマーが達成しようとしているように見えます。しかし、代入演算子は右辺値を返すと思っていました-どのようにして右辺値の結果に代入できるのでしょうか?
language-agnostic - 複合代入演算子、値が (その間に) 変更されるとどうなりますか?
次の擬似コードを検討してください (言語に依存しません)。
の評価中に関数f
が変化したときy
(つまり) 、元の値が「凍結」されて「失われた」に変化しますか?v
v += f(v)
v
v
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;
。