問題タブ [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.
java - Java で += ではなく =+ の使用を自動的にキャッチする
私は、以下を入力して、テストに入るまでそれをキャッチしないというこの恐ろしい習慣を持っています:
もちろん、正しいバージョンは
私はこの過ちを無数に犯してきました。テストケースを回避したバグのあるコードがいくつか出回っていても、私は驚かないでしょう。これを体系的に防ぐ方法が必要です。何か案は?
java - Java:+=同等性
は:
に相当:
python - Pythonで複合演算子を使用してprint()を使用する
次のコードはPythonでは機能しません
このコードは
何故ですか?
java - i が int で l が long の場合、なぜ i+=l がコンパイルされるのでしょうか?
Java の +=、-=、*=、/= 複合代入演算子(良い質問です:))を見つけましたが、よくわからない部分がありました。その質問からの借用:
その後
i = i + l;
、コンパイルされませんがi += l;
、正常にコンパイルされます。
リンクされた質問に対する受け入れられた回答には、次のように記載されています。
E1 op= E2 の形式の複合代入式は、E1 = (T)((E1) op (E2)) と同等です。ここで、T は E1 の型ですが、E1 は 1 回だけ評価されます。
これは、一度だけ評価される例外を除いてi += l;
同じです。i = (int)((i) + (l));
i
Along
は (IIRC でさえ保証されている) よりも長いint
可能性があり、したがって、はるかに広い範囲の値を保持できます。
この状況では、ステートメントの実行中 (右辺値式の評価または代入) のある時点で必要な縮小変換が原因でデータ損失が非常に簡単に発生する可能性があることを考えるとi += l;
、コンパイル時エラーまたは少なくとも警告ではないのはなぜですか?
programming-languages - a=bの複合代入演算子はありますかa(ここで可換ではありません)?
多くの言語では、a = a+bはa+= bと書くことができます。数値演算の場合、a+bはb+aと同じであるため、単一の複合演算子で十分です。
また、a = a--bはa-=bと書くことができます。
ただし、abはbaと同じではありません。したがって、複合代入演算子はa=b-aに対しては機能しません。
それで、演算a = b op a(opは+、-、*、/、%、および順序が重要になる可能性があります)の複合代入演算子はありますか?
[非可換演算]
c - C - 論理複合演算子
複合演算子 '&=' は論理またはビットごとの AND ですか?
つまり、次とa &= b
同じです。
a = a & b
a = a && b
c++ - C4244 複合加算代入ではレベル 4 の警告が表示されるが、合計と代入では警告されない
MSVS 2005 では、次の C コードで 1 つの警告が生成されます。
警告メッセージは次のとおりです。
同じことが C++ コードにも当てはまります。
2つのステートメントの違いは何ですか? 複合演算子が右側の式を左側の型に暗黙的にキャストすると聞いたことがありますが、C または C++ 標準への参照は見つかりませんでした。しかし、sum-and-assignment ステートメントは同じことをすべきではないでしょうか? 私はそれが int 昇格に関係しているのではないかと疑っていましたが、逆アセンブルからわかるように、これは両方の場合に起こります:
さらに、警告レベルが 4 に設定されている MSVS 2008 では警告は表示されません。これは、後で修正された VS 2005 のバグと見なすことができますか、それとも元の警告に何らかの意味がありますか? ドキュメントはここでは役に立ちません。