1

シンプルで、おそらく答えやすい質問です。|| の違いは何ですか || and または if ステートメントのようなもので。

簡単な例:

#include <iostream>

int main(){
    int x = 8;

    if(x == 8 or 17){
        std::cout << "Hello World!\n";
    }
}

#include <iostream>

int main(){
    int x = 8;

    if(x == 8 || 17){
        std::cout << "Hello World!\n";
    }
}

これらは私にとって同じように機能するようです。どちらもコンパイルされ、「Hello World!」が表示されます。私はいつも || を使ってきました。またはについてさえ知りませんでした。彼らはまったく同じことをしますか?または、 \n や endl を使用するなど、わずかに異なる動作をするようなわずかな違いがあります。これが本当に単純な質問である場合は申し訳ありません。御時間ありがとうございます。

4

3 に答える 3

3

Luchian が言うように、意味的な違いはありません。最新の C++ 標準のドラフトでは、「キーワード」セクションに次のように記載されています。

さらに、特定の演算子と句読点 (2.6) の表 5 に示されている代替表現は予約されており、それ以外の場合は使用されません。

and     and_eq  bitand  bitor  compl   not
not_eq  or      or_eq   xor    xor_eq

しかし、あなたのコードを読む人には違いがあるかもしれません。「論理和」の||演算子は数十年前にさかのぼります。代替表現はより新しいものです。

それらは、少なくとも 1998 年の C++ 標準と同じくらい早く導入されました (ISO 以前の C++ にそれらがあったかどうかはわかりません)。それらを認識しない C++ コンパイラに遭遇する可能性は少なくとも考えられますが、そうである場合、他の問題が発生するほど古いコンパイラになるでしょう。C は、1995 年の修正で同様の識別子を導入しました (ただし、 のみ#include iso646.h>)。

少なくとも C では、おそらく C++ では、C および C++ に必要なすべての文字を含まない文字セットを使用するシステムに対応するために、これらの代替表現が digraph および trigraphs とともに導入されました。

{ } [ ] # & | ^ ~ !

より現代的な文字セット、特に Unicode の導入により、そのようなシステムはますますまれになっています。

しかし、私が知る限り、それらがコードで使用されることはめったになく (それらを使用するコードを見たことがないと思います)、一部の C++ プログラマーはそれらを認識していない可能性があります。||ではなくを使用すると、コードが読みやすくなると思いますor

Luchian も言っているように(x == 8 || 17)、たとえば英語の文法から期待されるような意味ではありません。「x が 8 または 17 に等しい」という意味ではありません。それは意味し((x == 8) || 17)ます; 17と比較するのではなく、それ自体が条件として扱われxます。おそらくあなたは書きたかったのでしょう(x == 8 || x == 17)

于 2012-08-09T00:07:31.300 に答える
1

それはまったく同じです、それは代替演算子です。ここで完全なリストを見つけることができます。

x == 8 or 17また、常に true を返すことに注意してください。またはxであるかどうかはチェックしません。817

于 2012-08-08T23:47:11.553 に答える
0

違いはありません、どちらも同じことをします

于 2018-03-28T15:40:33.557 に答える