Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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に変換できることがわかります。変換が暗黙として扱われる場合、コンパイラは変換用のスタブを挿入します。変換が明示的なものとして扱われる場合、コンパイラーはエラーをスローします。コンパイラがそのようなエラーをキャッチできない場合、プログラムは実行時または実行時に失敗する可能性があります。


  1. '?'は何ですかC / C ++で行いますか?

    演算子「?」は、作用するために3つのオペランドを必要とするため、三項演算子として知られています。 「?」で表すことができます。 :」。条件演算子とも呼ばれます。オペレーターはパフォーマンスを向上させ、コードの行を減らします。 これがC言語の三項演算子の構文です Expression1 ? Expression2 : Expression3 これがC言語の三項演算子の例です 例 #include <stdio.h> int main() {    int a = -1;    double b = 26.4231;   &nbs

  2. C /C++の三項演算子

    作用するために3つのオペランドを必要とする演算子は、三項演算子として知られています。 「?」で表すことができます。 :」。条件演算子とも呼ばれます。オペレーターはパフォーマンスを向上させ、コード行を減らします。 これがC言語の三項演算子の構文です Expression1 ? Expression2 : Expression3 これがC言語の三項演算子の例です 例 #include <stdio.h> int main() {    int a = -1;    double b = 26.4231;    int c