if..else 句の代わりに三項演算子が実装されていることがわかります。 ?:で表されます。 「?」 ' 記号は if 部分に相当し、':' は else 部分に相当します。次の 3 つのプログラムは、三項演算子の場合の興味深い観察結果を説明しています。
次のプログラムはエラーなしでコンパイルされます。三項式の戻り値の型は float (exp2 など) であることが想定されており、exp3 (つまり、リテラルの 0 - int 型) は暗黙的に float に変換可能です。
#include <iostream> using namespace std; int main(){ int test1 = 0; float fvalue = 3.111f; cout<< (test1 ? fvalue : 0) << endl; return 0; }
コンパイラが三項式の戻り値の型を見つけられないか、exp2 (char 配列) と exp3 (int) の間に暗黙的な変換がないため、次のプログラムはコンパイルされません。
#include <iostream> using namespace std; int main(){ int test1 = 0; cout<< test1 ? "A String" : 0 << endl; return 0; }
次のプログラムはコンパイルできるかもしれませんが、実行すると失敗します。三項式の戻り値の型は (char *) 型に制限されていますが、式は int を返すため、プログラムは失敗します。文字通り、プログラムは実行時または実行時にアドレス 0 に文字列を出力しようとします。
#include <iostream> using namespace std; int main(){ int test1 = 0; cout << (test1 ? "A String" : 0) << endl; return 0; }
以上がC/C++ 三項演算子に関する興味深い観察の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。