問題タブ [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.
javascript - JavaScript 三項演算子での演算子の優先順位
三項演算子と組み合わせて、このコードの最初の部分 ( += ) に頭を悩ませているようには見えません。
このコードが機能すると思う方法は次のとおりです。
しかし、コンソールにエラーが表示されるため、それは正しくありません。
私の質問は、このコードを正しく解釈するにはどうすればよいですか?
java - Javaに条件付き演算子と条件付き演算子の複合代入バージョンがないのはなぜですか?(&& =、|| =)
したがって、ブール値の二項演算子の場合、Javaには、、、、および&
があります。|
^
&&
||
ここで彼らが何をしているのかを簡単に要約しましょう:
の場合
&
、結果の値はtrue
、両方のオペランド値がtrue
;の場合です。それ以外の場合、結果はfalse
です。の場合
|
、結果の値はfalse
、両方のオペランド値がfalse
;の場合です。それ以外の場合、結果はtrue
です。の場合
^
、結果の値はtrue
、オペランド値が異なる場合です。それ以外の場合、結果はfalse
です。
&&
演算子は似&
ていますが、左側のオペランドの値が。の場合にのみ右側のオペランドを評価しますtrue
。
||
演算子はに似|
ていますが、左側のオペランドの値が。の場合にのみ右側のオペランドを評価しますfalse
。
現在、5つすべてのうち、3つには複合代入バージョン、つまり、、|=
およびが&=
あり^=
ます。だから私の質問は明白です:なぜJavaは同様に提供&&=
しないのですか?||=
必要以上に必要だと思い&=
ます|=
。
そして、Javaにはがありますので、「長すぎるため」は良い答えではないと思います>>>=
。この省略にはもっと良い理由があるに違いありません。
15.26代入演算子から:
12個の代入演算子があります。[...]
= *= /= %= += -= <<= >>= >>>= &= ^= |=
&&=
と||=
が実装された場合、最初に右側を評価しないのはそれだけであるというコメントがありました。複合代入演算子が最初に右側を評価するというこの概念は誤りだと思います。
フォームの複合代入式は、
E1 op= E2
と同等ですE1 = (T)((E1) op (E2))
。ここT
で、はのタイプですが、 1回だけ評価されるE1
点が異なります。E1
NullPointerException
証拠として、次のスニペットは、ではなく、をスローしArrayIndexOutOfBoundsException
ます。
java - Java のショートカット "or-代入" (|=) 演算子
私は Java で長い間比較を行っていますが、そのうちの 1 つまたは複数が正しいかどうかを知りたいです。比較の文字列は長くて読みにくかったので、読みやすくするために分割し、自動的に|=
ではなくショートカット演算子を使用するようになりましたnegativeValue = negativeValue || boolean
。
negativeValue
default<something> 値のいずれかが負の場合は true になると思います。これは有効ですか?それは私が期待することをしますか?Sun のサイトや stackoverflow で言及されているのは見当たりませんでしたが、Eclipse には問題がないようで、コードはコンパイルおよび実行されます。
同様に、複数の論理積を実行したい場合、&=
代わりに? を使用でき&&
ますか?
java - C ++での「|=」操作とはどういう意味ですか?
私は次のコードを持っていますが、それが何を意味するのか理解できません:
誰でも助けてくれます!
java - 精度が失われる可能性があるさまざまな動作
Javaでは、あなたがするとき
精度エラーが発生する可能性があります。しかし、なぜあなたがそうするなら
エラーはありませんか?
java - 複合割り当ての自動 (アン) ボックス化が失敗する
複合代入とインクリメント/デクリメント演算子の暗黙的なキャストのおかげで、次のものがコンパイルされます。
また、自動ボクシングと自動アンボックスのおかげで、以下もコンパイルされます。
それでも、次のスニペットの最後の行でコンパイル時エラーが発生します。
ここで何が起こっているのかを理解するのを手伝ってくれる人はいますか? バージョンはbyte b
問題なくコンパイルされるので、それByte bb
に合わせて、必要に応じて適切なボックス化とボックス化解除を行うべきではありませんか?
追加の質問
Byte
では、複合代入演算子を、Character
、およびShort
左側で機能させる方法はありますか、それともこれらの型に対して単に違法 (!!!)ですか?
scripting - Awkなどで条件付きの割り当てに「else if」を追加するよりクリーンな方法はありますか?
awk スクリプトなどの特定の言語では、条件付きの割り当てが可能です。たとえば、次の形式のリスト ファイルがあるとします。
例えば
そして、1 ドルを超えるものすべてに課税したい場合は、awk スクリプトを使用できます。
...条件付き代入を使用して構文を短縮します。
しかし、$20 を超えるすべてのアイテムに $1 オフ、$40 を超えるアイテムに $2 オフも提供したいとします。c のような言語では、通常、次のようにします。
...まあ、awk やその他のスクリプト言語を COMPOUND 割り当てに入れることができることを発見しました。例えば:
私の質問は、
a)複合代入 (このようなもの) は、条件付き代入をサポートするスクリプト言語と一般的に互換性がありますか?
b) awk スクリプトで複数条件付きの割り当てを実行するための非クラッジ方法はありますか?
明確にするために: 私は代入(<...>?<...>:<...>;の省略形についてのみ話している。従来の条件付き代入ではなく、cのような複合代入を行う方法をすでに知っている) Awk スクリプトで. 補足として, なぜ私が省略形を使用するのかについて, メリットは明らかだと思います.短いということ. しかし, 正規表現のように, 混乱した構文が後世のために何をするかについての良い説明を書きたいと思うかもしれません. .
c++ - i += ++i は C++0x で未定義の動作ですか?
C++0x に関する限り i = ++i
未定義ではないという説明に非常に納得していますが、 の動作がi += ++i
明確に定義されているかどうかを判断することはできません。テイカーはいますか?
python - + =はPythonで正確に何をしますか?
+=
Pythonで何ができるかを知る必要があります。とても簡単です。Pythonの他の速記ツールの定義へのリンクもいただければ幸いです。
c - 複利/whileループ
小数の時間をリアルタイムに変換したかったのですが、それは問題なく実行できますが、時間が24を超え、分が60分を超える場合は、日数を増やしたいと思いました。whileループは減算し、新しい値を出力しますが、時間/日は合成されません。1日1時間77分1日2時間17分読みたかったのですが、1日1時間17分です。