C /C++三項演算子に関するいくつかの興味深い所見
if..else句の代わりに三項演算子が実装されていることはわかっています。 ?:で表されます。 「?」 symbolはifpartと同等であり、':'はelsepartと同等です。次の3つのプログラムは、三項演算子の場合のいくつかの興味深い観察を説明しています。
次のプログラムはエラーなしでコンパイルできます。三項式の戻り型は(exp2の場合と同様に)floatであることが期待され、exp3(つまり、リテラルゼロ-int型)は暗黙的にfloatに変換できます。
#include <iostream> using namespace std; int main(){ int test1 = 0; float fvalue = 3.111f; cout<< (test1 ? fvalue : 0) << endl; return 0; }
次のプログラムはコンパイルできません。理由は、コンパイラが3項式の戻り型を見つけられないか、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; }
exp2が出力タイプとして扱われ、exp3が実行時または実行時にexp2に変換できることがわかります。変換が暗黙として扱われる場合、コンパイラは変換用のスタブを挿入します。変換が明示的なものとして扱われる場合、コンパイラーはエラーをスローします。コンパイラがそのようなエラーをキャッチできない場合、プログラムは実行時または実行時に失敗する可能性があります。
-
'?'は何ですかC / C ++で行いますか?
演算子「?」は、作用するために3つのオペランドを必要とするため、三項演算子として知られています。 「?」で表すことができます。 :」。条件演算子とも呼ばれます。オペレーターはパフォーマンスを向上させ、コードの行を減らします。 これがC言語の三項演算子の構文です Expression1 ? Expression2 : Expression3 これがC言語の三項演算子の例です 例 #include <stdio.h> int main() { int a = -1; double b = 26.4231; &nbs
-
C /C++の三項演算子
作用するために3つのオペランドを必要とする演算子は、三項演算子として知られています。 「?」で表すことができます。 :」。条件演算子とも呼ばれます。オペレーターはパフォーマンスを向上させ、コード行を減らします。 これがC言語の三項演算子の構文です Expression1 ? Expression2 : Expression3 これがC言語の三項演算子の例です 例 #include <stdio.h> int main() { int a = -1; double b = 26.4231; int c