違いはありますか
if ( a or b or c ) {
...と...
if ( a || b || c ) {
...さらに一般的には、優先順位の観点からも、2つの演算子間で?
多くのベテラン プログラマーが「あれ、誰かが突然 Pascal を書き始めたの?」と思わせる文体的な感覚を除けば、機能的な違いはありません。
これらの代替名の目的は、スウェーデンやドイツなどに住む人々が ASCII の標準ローカル バリアントを使用できるようにすること|
です ö
。
Unicode と拡張 ASCII が導入されて以来、この必要性はほとんどなくなりました。なぜなら、国有化された文字セットは、国別の「特殊」文字を生成するためにあまり一般的に使用されていない文字を「盗む」必要がないからです。
編集済みをオーバーロードできoperator or
ます。
それらは同じです。
C および C++ の演算子を参照してください。
型をオーバーロードする場合、コンパイラがそれらを同じ関数と見なすため、同じ型をoperator or
オーバーロードすることはできません。operator||
このエラーは、次のコードから発生します。
> prog.cpp: In function ‘bool operator||(Type, Type)’:
> prog.cpp:8:6: error: redefinition of ‘bool operator||(Type, Type)’
> prog.cpp:4:6: error: ‘bool operator||(Type, Type)’ previously defined here
ideaoneについて:
class Type {}
};
bool operator or(Type lhs, Type rhs) {
return true;
}
bool operator ||(Type lhs, Type rhs) {
return false;
}
int main() {
Type a;
Type b;
a or b;
a || b;
}
他の回答で述べたように、2つは同じであり、したがって交換可能であることが意図されています。ただし、大きな違いが1つあります。MSVC、C ++ Builder、およびその他のコンパイラor
も、特別なヘッダーを含めないとサポートしません。そのor
ため、携帯性の障害が発生します。
ISO14882:2011(e) 2.6-2 (表 2)or
によると、 の代替トークンで||
あり、まったく同じ意味を持ちます。
言語のすべての点で、各代替トークンは、スペルを除いて、それぞれそのプライマリ トークンと同じように動作します。
多くの場合、コンパイラはそれらを#define or ||
または内部の同等物として実装します。
and
、bitor
、xor
、compl
、bitand
、and_eq
、、およびについてor_eq
も同様です。xor_eq
not
not_eq