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

C /C++プログラムの初期化されていないプリミティブデータ型


このセクションでは、初期化されていない1つの変数を宣言するときに、それらがCまたはC++言語で保持する値を確認します。コンパイラがintに0、floatに0.0などの値を割り当てると想定することがあります。しかし、文字データ型にはどうなるでしょうか。実装の使用を見て、さまざまなコンパイラを使用してコンパイルしてみましょう。

例(C ++)

理解を深めるために、次の実装を見てみましょう-

#include <iostream>
using namespace std;
int main() {
   char char_var;
   float float_var;
   int int_var;
   double double_var;
   long long_var;
   cout << char_var << endl;
   cout << float_var << endl;
   cout << int_var << endl;
   cout << double_var << endl;
   cout << long_var << endl;
}

出力(Cpp.shでコンパイル)

0
0
0
0

出力(オンラインGDBでコンパイル)

5.88054e-39
0
6.95297e-310
0

出力(ローカルシステム)

9.73438e-039
4309744
1.15685e-306
-53505136

ここで、なぜC /C++コンパイラが変数をデフォルト値で初期化しないのかという疑問が生じます。答えは簡単です。スタック変数を初期化するオーバーヘッドは、実行速度を妨げるためコストがかかります。この結果、これらの変数は不確定な値で構成される可能性があります。したがって、プリミティブデータ型変数をコードに適用する前に初期化することをお勧めします。


  1. n番目のカタラン数のC/C ++プログラム?

    カタラン数は一連の数です。カタラン数は、さまざまなカウントの問題で発生する一連の自然数を形成します。多くの場合、再帰的に定義されたオブジェクトが関係します。 C n 長さ2nのディック言語の数です。ディックワードは、n個のXとn個のYで構成される文字列であり、文字列の最初のセグメントにXより多くのYが含まれることはありません。たとえば、次は長さ6のディック言語です XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY. 記号Xを開き括弧として、Yを閉じ括弧として再解釈します。C n 正しく一致するn組の括弧を含む式の数をカウントします ((()

  2. C / C ++での引数の強制?

    ここでは、CまたはC++での引数の強制について説明します。引数強制は、コンパイラーが引数をあるタイプから別のタイプに暗黙的に変換できる1つの手法です。引数プロモーションルールに従います。 1つの引数が下位データ型の場合、上位データ型に変換できますが、その逆は当てはまりません。その理由は、1つの上位データ型が下位データ型に変換されると、一部のデータが失われる可能性があるためです。 暗黙の変換がどのように行われるかを表現できるピラミッドを1つ見てみましょう。 例 #include<iostream> using namespace std; double myAdd(doubl