問題タブ [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 が 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;、コンパイル時エラーまたは少なくとも警告ではないのはなぜですか?

0 投票する
3 に答える
631 参照

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 aopは+、-、*、/、%、および順序が重要になる可能性があります)の複合代入演算子はありますか?

[非可換演算]

0 投票する
5 に答える
430 参照

c - C - 論理複合演算子

複合演算子 '&=' は論理またはビットごとの AND ですか?

つまり、次とa &= b同じです。

  • a = a & b
  • a = a && b
0 投票する
1 に答える
156 参照

c++ - C4244 複合加算代入ではレベル 4 の警告が表示されるが、合計と代入では警告されない

MSVS 2005 では、次の C コードで 1 つの警告が生成されます。

警告メッセージは次のとおりです。

同じことが C++ コードにも当てはまります。

2つのステートメントの違いは何ですか? 複合演算子が右側の式を左側の型に暗黙的にキャストすると聞いたことがありますが、C または C++ 標準への参照は見つかりませんでした。しかし、sum-and-assignment ステートメントは同じことをすべきではないでしょうか? 私はそれが int 昇格に関係しているのではないかと疑っていましたが、逆アセンブルからわかるように、これは両方の場合に起こります:

さらに、警告レベルが 4 に設定されている MSVS 2008 では警告は表示されません。これは、後で修正された VS 2005 のバグと見なすことができますか、それとも元の警告に何らかの意味がありますか? ドキュメントはここでは役に立ちません。