タグ付けされた質問 「equality-operator」

30
JavaScript比較で使用する必要がある等号演算子(== vs ===)はどれですか?
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 JavaScript を通過するためにJSLintを使用していて、内部を比較するようなことを行うと、==(2つの等号)を===(3つの等号)に置き換えるための多くの提案が返されidSele_UNVEHtype.value.length == 0ますifステートメントます。 交換にパフォーマンス上のメリットがある==とは、===? 多くの比較演算子が存在するため、パフォーマンスの向上は歓迎されます。 タイプ変換が行われない場合、パフォーマンスが向上し==ますか?

15
==と!=は相互に依存していますか?
私はC ++で演算子オーバーロードについて学んだ、と私はそれを見る==と!=、単純にユーザー定義型用にカスタマイズすることができますいくつかの特別な機能です。しかし、私の懸念は、なぜ2つの別個の定義が必要なのかということです。私があればと思ったa == b事実である場合、a != b定義によって、あるため、自動的に偽の、およびその逆で、かつ、他の可能性がないa != bです!(a == b)。そして、これが真実ではない状況を想像することはできませんでした。しかし、おそらく私の想像力は限られていますか、それとも私は何かについて無知ですか? もう1つの観点から1つを定義できることは知っていますが、これは私が求めていることではありません。また、値による比較や同一性によるオブジェクトの比較の違いについても質問していません。または、2つのオブジェクトが同時に等しいか等しくないかどうか(これは間違いなくオプションではありません!これらは相互に排他的です)。私が尋ねているのはこれです: 2つのオブジェクトが等しいことについて質問しても意味がないが、等しくないことについて質問しても意味がない状況はありますか?(ユーザーの観点から、または実装者の観点から) このような可能性がない場合、なぜC ++ではこれら2つの演算子が2つの異なる関数として定義されているのでしょうか。


2
多くの標準ライブラリタイプのC ++ 20でoperator!=が削除されるのはなぜですか?
cppreferenceによると、std::type_info::operator!=C ++ 20で削除されますが、std::type_info::operator==明らかに残っています。 背後にある理由は何ですか?不平等を比較することは無意味であることに同意するかもしれませんが、平等を比較することも同様に無意味ですよね? 同様に、operator!=などの容器を含む他の多くの標準ライブラリの種類のstd::unordered_map::operator!=とstd::unordered_set::operator!=cppreferenceに従って20 C ++で除去されます。 書き込みに持つことif(!(id1 == id2))に比べて任意のコードがどの明確にしないif(id1 != id2)だけで、反対、対照的に、...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.