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

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


最もよくある質問の1つは、CまたはC++の初期化されていないプリミティブデータ値の値はどうなるかということです。答えはシステムによって異なります。コンパイラーが変数に0を割り当てると想定できます。 0の整数、浮動小数点0.0の場合は実行できますが、文字型データの場合はどうなりますか?

#include <iostream>
using namespace std;
main() {
   char a;
   float b;
   int c;
   double d;
   long e;
   cout << a << "\n";
   cout << b << "\n";
   cout << c << "\n";
   cout << d << "\n";
   cout << e << "\n";
}

出力(Windowsコンパイラの場合)

1.4013e-045
0
2.91499e-322
0

出力(Linuxコンパイラの場合)

0
0
0
0

では、なぜCまたはC++が変数にデフォルト値を割り当てないのかという疑問が生じます。答えは、スタック変数を初期化するオーバーヘッドはコストがかかるということです。また、実行速度も低下します。したがって、これらの変数には中間値が含まれている可能性があります。したがって、使用する前にプリミティブデータ型の値を初期化する必要があります。


  1. C / C ++のAAツリー?

    コンピュータサイエンスのAAツリーは、順序付けられたデータを効率的に保存および取得するために実装されたバランスの取れたツリーの形式として定義されます。 AAツリーは、エントリの効率的な追加と削除をサポートするバイナリ検索ツリーの形式である赤黒ツリーのバリエーションとして扱われます。赤黒木とは対照的に、AAツリーの赤いノードは、左のサブチャイルドではなく、右のサブチャイルドとしてのみ追加できます。この操作の結果、2-3-4ツリーではなく2-3ツリーのシミュレーションが行われるため、メンテナンス操作が簡素化されます。赤黒木のメンテナンスアルゴリズムでは、ツリーのバランスを適切にとるために、7つの異

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

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