問題タブ [associativity]
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 - a>b>c それぞれが数値を持つ場合の評価
次のような競争力のある C の質問に出くわしました。
次の出力を見つけます。
コンパイラは 0 を返します。
私の説明は、おそらくこれは右から左への評価の副作用であるということです。私の推測では、最初b>c
に評価されます (最初にスタックにプッシュされると仮定すると、 > の左から右への結合性を知っているので、ここで混乱します)、これは true と評価されます。この真の変数の値は、数値 > 0 (不明) であり、a > that_value
評価されて結果が得られます。しかし、私は間違っているかもしれません!
出力がどのように評価されるかについての指針/洞察は役に立ちます。ありがとう。
編集:私は1を与えた非常に古いコンパイラでテストしました、それは私の側の間違いでした、それを修正しました。
postgresql - 内部結合SQLの結合性と可換性
このスキーマがあるとしましょう。
内部結合が結合的かつ可換的であることはわかっていますが、その理由がよくわかりません。
クエリを考えると:
null
セーラーとボートには共通のフィールドがないため、これは戻ってくるべきだと考えています。
セーラーの名前と予約したボートの名前を返す必要があります。
内部結合が交換可能かつ結合的であると想定される理由を教えてください。
ありがとう!
c - ++ 演算子のあいまいさ 結合性
「C How to Program 6th edition - page 119」は、++演算子の結合性は「右から左」であると述べています。++ は単項演算子であるため、これはどういう意味なのだろうか。どのような場合に単項演算子の結合性が発生するのでしょうか? 例を教えてください。
一方、一部のネット リソースは、状態 (前置または後置) に基づいて ++ 演算子に異なる結合性を与えます。この本は接尾辞と接頭辞を一緒に「右から左へ」の結合性を与えていますが、どちらが正しいですか?
について例を挙げていただければ、感謝いたします。連想性も。
感謝と敬意
javascript - JavaScript での reduceRight のネイティブ実装が間違っている
f
array の要素に対する連想操作のa
場合、次の関係が成り立つ必要があります:a.reduce(f)
は と同等である必要がありますa.reduceRight(f)
。
実際、それは結合的かつ交換可能な操作にも当てはまります。例えば:
ただし、結合的ではあるが可換的ではない操作には当てはまりません。例えば:
f
forの引数を反転reduceRight
させて同等にする必要があります。
reduceRight
これは、のネイティブ実装が間違っていると私に信じさせます。
reduceRight
この機能は次のように実装する必要があると思います。
result
は前の値 (右側の値) を表すため、関数の 2 番目のパラメーターにするのが理にかなっていますf
。現在の値は左側の値を表します。したがって、現在の値を関数の最初のパラメーターにすることは理にかなっていますf
。このように、可換でない連想操作の場合でも、前述の関係が成り立ちます。
だから、私の質問は次のとおりです。
reduceRight
私が行った方法で実装する方が理にかなっているのではありませんか?- ネイティブが
reduceRight
私のように実装されないのはなぜですか?
bnf - Backus Naur 形式の結合性
これは、指数 PowExp の正しい結合性を実装する正しい方法ですか? したがって、2^3^4 は実際には (2^(3^4)) です。
java - 文字列の追加によって異なる答えが得られるのはなぜですか?
これは出力されます12
が、別の順序で
印刷され57
ます。どうしてこれなの?