問題タブ [logical-operators]

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 投票する
1 に答える
273 参照

sql - 正規表現を使用した SQL と論理マージ関数を使用したインデックス

複雑なテキスト検索エンジンを開発しようとしています。私は多くの本から何千ものテキストページを持っています。指定された複雑な論理基準を含むページを検索する必要があります。これらの基準には、実質的に次の任意の組み合わせを含めることができます。

A: 全文です。

B: 単語の語根 (語幹に似ています。つまり、特定のキー文字を持つすべての単語)。

C: Word テンプレート (一部の言語では、形容詞、過去/現在の動詞など、さまざまな品詞を形成するために特定のテンプレートに語根が埋められます...)。

D: 論理接続詞: AND/OR/XOR/NOT/IF/IFF および優先順位を示す括弧。

では、ページの全文をデータベース (インデックス化されていない) に保存し、SQL と正規表現を使用してそれらすべてを検索する方が高速でしょうか?

または、word/root/template-page-location タプルのインデックスを作成する方がよいでしょうか。したがって、個々の単語/語根/テンプレートの検索を強化できます。ただし、クエリに論理結合子を導入すると、扱いが難しくなります。そのような場合、次の手順を実行することを考えました。

1: 指定されたクエリで個々の単語/語根/テンプレートを個別に検索します。

2: 優先順位に基づいて、論理結合に応じて、(ステップ 1 からの) 2 つの結果リストを一度にマージします。

たとえば、「he AND (is OR was)」を検索する場合:

1: "he"、"is"、"was" を個別に検索し、各単語の結果リストを取得します。

2: マージ関数 OR-MERGE を使用して、「is」と「was」の結果リストをマージします。

3: マージ関数 AND-MERGE を使用して、OR-MERGE 関数からのマージ結果リストを "he" のリストとマージします。

手順 3 の結果は、指定されたクエリの結果として返されます。

教祖はどう思いますか?どちらが速いですか?より良いアイデアはありますか?

よろしくお願いします。

0 投票する
4 に答える
456 参照

python - Pythonのreturnステートメントでの論理演算子の評価

これはどのように実行されますか?

xたとえば、配列です。[1, 1, 1, 3]

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

javascript - JavaScriptで===演算子チェックを使用するのはいつですか?

重複の可能性:
Javascript === vs == : どの「等しい」演算子を使用しても問題ないですか?

タイトルが示すように。===JavaScript を使用する場合、演算子 checkを使用する必要がある場合と使用しない場合があります。

編集:より完全な回答はこちらにあります。指摘してくれた Mark Byers に感謝します。

_L

0 投票する
7 に答える
3171 参照

javascript - javascriptで論理演算子をチェーンするための省略形?

次の条件を JavaScript で記述するより良い方法はありますか?

私はこれらの論理 OR をすべてつなぎ合わせるのが嫌いです。なんらかの略語があるかどうか疑問に思っています。

ありがとう!

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

c# - C#の論理積と条件付きAND、ORの違いは何ですか?

重複の可能性:
|の違いは何ですか および|| または演算子?

論理積と論理積:

条件付きANDおよびOR:

これまで、条件付きオペランドについてしか知りませんでした。私はそれが何をするのか、そしてそれをif文に適用する方法を知っています。しかし、論理オペランドの目的は何ですか?

0 投票する
7 に答える
22312 参照

javascript - 割り当て内の Javascript AND 演算子

JavaScriptでできることは知っています:

変数は、 、、またはoneOrTheOtherでない場合、最初の式の値を取ります。その場合、2 番目のステートメントの値に割り当てられます。nullundefinedfalse

しかし、論理 AND 演算子を使用すると、変数は何oneOrTheOtherに割り当てられるのでしょうか?

someOtherVarが false でない場合はどうなりますか? が false の
場合はどうなりますか?someOtherVar

JavaScript を学習したばかりで、AND 演算子と組み合わせて割り当てを行うとどうなるか興味があります。

0 投票する
4 に答える
1004 参照

conditional - 論理否定演算子を使用するこの条件ステートメントを単純化できますか?

これが「論理演算子101」のような質問である場合は申し訳ありません。画面を15分間見つめ、頭を包み込もうとしていますが、行き詰まっています。

以下を表現するためのより簡潔でエレガントな方法はありますか(これはJavaScript構文ですが、言語に依存する質問ではありません):

いくつかの実験に基づくと、これは論理的に同等ではないようです。

さらに、このような質問についてさらに研究するために、誰かがオンラインリソースを推奨できますか?この種のことはコンピュータサイエンスのカリキュラムで抽象的なレベルでカバーされていると思います。それは私のプログラミング知識の本質的なギャップであり、私が本当に埋めたいと思っています。ありがとう!

0 投票する
1 に答える
4604 参照

ruby - Ruby 論理演算子

重複の可能性:
Ruby の「and」、「or」演算子の背後に知恵はありますか?

次の論理演算子のペアの違いは何ですか?

  1. && 対 and
  2. || 対または
0 投票する
5 に答える
14097 参照

c - C に論理代入演算子がないのはなぜですか?

フォームのステートメントをコーディングする必要がありました

whereを評価し、結果をiffexprに代入するが設定されていません。これは、論理 OR の短絡機能に依存しています。aa

上記を短く書くと、もちろん、

しかし (驚いたことに) C には論理代入演算子がありません。

だから私の質問は2つあります。まず、標準 C で最初のステートメントを書くためのより短い方法はありますか (三項演算子はさらに悪いです - 3 回a = a ? a : exprスペルアウトする必要がありますa)。

次に、C に論理代入がないのはなぜですか? 私が考えることができる考えられる理由は次のとおりです。

  • 文法の解析が難しくなりますか?
  • これらの場合の短絡の処理には微妙な点がありますか?
  • それは不必要だと考えられていました (しかし、それはすべての演算子割り当てに対する議論ではありませんか?)

編集

この質問のロックを解除してください:

  • それがリンクされている質問(の複製とされるものとして)は、まだ回答されていません。その質問に対する(受け入れられた)回答||=は、の機能を複製するため存在しないと述べてい|=ます。それは間違った答えです。|=短絡しません。

  • C と C++ は同じ言語ではありません。なぜCにそれがないのか知りたいです。実際、C++ のような派生言語、特に Java (Edmund の回答で示唆されているようなレガシー コードの問題に悩まされていない) は、この問題をさらに興味深いものにしています。

編集2

本来の意図が間違っていたようです。ステートメントa = a || expr( whereaは整数でありexpr、整数値を返します。最初にaとの両方exprが暗黙的に「ブール値」に変換され、次に「ブール値」が に割り当てられaます。これは正しくありません — 整数値は失われます。ありがとうございます。 、イェンス、エドマンド。

したがって、質問の最初の部分では、代替手段ではなく:)、私の意図をコーディングするための正しい方法は次のようになります。

また

それらは同じように最適化する必要があります(私は思います)が、個人的には最初のものを好みます(a入力するものが1つ少ないため)。

ただし、質問の2番目の部分はまだ残っています。Jens と Edmund が のあいまいさについて示した議論は、a ||= exprにも同様に当てはまりますa = a || expr。代入ケースは、単純に通常のケースとして扱うことができます。

  • aブール値に変換
  • true の場合、式全体の値はのブール値と等しくなります。a
  • それ以外の場合は を評価しexpr、結果をブール値に変換し、 に代入しaて返します

上記の手順は、割り当てと通常のケースの両方で同じようです。

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

c - 論理 NOT (!) 演算子はビットごとのステートメントでは機能しません

特定のビットごとの演算子と他の演算子のみを使用しながら、2 つの 32 ビット整数の合計をオーバーフローなしで計算できるかどうかを判断しようとしています。したがって、整数 x と y をオーバーフローせずに加算できる場合、次のコードは 1 を返し、それ以外の場合は 0 を返します。

ただし、1 であるべきときに 0 を返し、その逆も同様です。論理 NOT (!) 演算子、またはビットごとの XOR (^) を 0x1 で使用しても、問題は解決しません。

^これらは機能しません。

前もって感謝します。