トップ  >  リファレンス  >  基本  >  処理  >  三項演算処理
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ

天才数学者のエドワード・オークリー・ソープの物語とジョン・ケリーの公式は必見です。
三項演算処理




書式:
 式1 ? 式2 : 式3




式1は、式の結果がbool型であればどんな式でも使えます。
式1の結果がtrueの場合、式2の処理が実行されます。
式2の結果がfalseの場合、式3の処理が実行されます。

式2と式3はvoid型以外の値を返す必要があります。

サンプルソース:

int    tmp_int;
bool   tmp_bool;

tmp_bool = true;
tmp_int = tmp_bool ? 1 : 2;

Print(tmp_int);              // 1を表示

tmp_bool = false;
tmp_int = tmp_bool ? 1 : 2;

Print(tmp_int);              // 2を表示


// tmp_int = tmp_bool ? 1 : 2;と同じ意味の式

if ( tmp_bool ) tmp_int = 1;
else            tmp_int = 2;


演算子の使用制限
「式1」の値に基づいて「式2」または「式3」のいずれかの値を返す必要があります。これらの式はいくつか制限があります。

シンプルな型とユーザー定義型と列挙を混同してはいけません。NULLはポインタの為に使用する事が出来ます。
値の型がシンプルの場合、オペレータは最大型が使われます(型キャスト参照)。
いずれかの値が列挙で1つ目が数値型の場合、列挙はint型に置き換えられ、2番目のルールが適用されます。
両方の値が列挙の場合、その型が同一である必要がありオペレーターは列挙型になります。


ユーザー定義型(クラスまたは構造体)の制約事項:

型は同一である必要があります。または派生である必要があります。
型が同一(継承)では無い場合、オペレーターは親の型になります。すなわち子の型が暗黙的に親の型でキャストされます。
オブジェクトとポインタを混同しないでください。両方の式はオブジェクトかポインタのいずれかでなければなりません。NULLはポインタの為に使用する事が出来ます。


注意:
条件演算子の結果の型は、プログラムのコンパイル時に定義されているので、オーバーロード関数の引数に条件演算子を使用する場合は注意して下さい。
そしてこの型は、「式2」と「式3」の型の大きい方の型として定義されます。
スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system