and, && (C++)

提供: RAD Studio
移動先: 案内検索

キーワード(アルファベット順):インデックス への移動


カテゴリ

トークンの代替表現(C++)演算子(C++)

構文

説明

and 演算子は、&& 演算子(バイナリ AND または論理 AND)の代替表現です。

両方のオペランドの値が true の場合、結果の値は true になります。 そうでない場合、結果の値は false になります。 両方のオペランドは、暗黙的に論理型に変換され、結果の型は論理型になります。

&(ビット AND)演算子と異なり、&& 演算子は必ずオペランドを左から右に評価します。 左オペランドの評価が 0(または false)の場合、右オペランドは評価されません。

and および && 演算子では処理が省略されます(つまり、最初のオペランドの評価が false の場合、2 番目のオペランドを評価しない)。 したがって、以下の例のような NULL ポインタの検査は有効で安全です。

and 演算子を使用するには、[新しい演算子名を有効にする]オプション(-Vn コンパイラ スイッチまたは[プロジェクト|オプション...]ダイアログ ボックスの[互換性]ページ)を[True]にする必要があります。

and の例

bool test( int * p ) {
  return (p != 0) and (*p > 5);
}

and&& に置き換えても有効です。

&& または and をオーバーロードする

&& 演算子、および代替表現の and はオーバーロードできます。 演算子をオーバーロードした場合は、処理が短絡評価されないので、空のポインタの検査は安全ではないことに注意してください。 and をオーバーロードする例を以下に示します。

struct example {   bool operator and ( const example & ) {return true;}// same as operator &&}

右辺値参照に && を使用する

新しい C++11 標準の一部として、C++Builder は右辺値参照をサポートするようになりました。 右辺値参照は、以下のように宣言の型の後に &&(and ではなく)を記述することによって指定します:

Apt a;
Apt&& a_ref1 = a;

使い慣れた左辺値参照と新しい右辺値参照の重要な違いは、右辺値参照は一時変数(つまり、右辺値)にバインドでき、左辺値参照(少なくとも const ではない)は右辺値にバインドできないことです。

関連項目