3

簡単な質問ですが、たとえば次のように、正または負の値を保持する必要がない場合、すべての「空白または空の」変数を初期化することをお勧めします。

int value = 0;

それ以外の:

int value;

私が理解していることから、変数が事前に初期化されていない場合、デフォルトで変数を自動的に0に初期化するVisual Studioコンパイラを受け入れますが、ベストプラクティスとは何か、潜在的な危険性(ある場合)は何かについて興味があります。

特に VS 環境内の C# および C++ 言語について言及していますが、この質問はあらゆる言語やコンパイラに開かれています。

4

3 に答える 3

7

私が理解していることから、Visual Studioコンパイラは、変数が事前に初期化されていない場合、デフォルトで変数を自動的に0に初期化します

常にではない。

範囲が重要です。クラスのプライベート メンバーにはデフォルト値が自動的に割り当てられますが、ローカル スコープの変数 (つまり、メソッドで宣言された変数) は割り当てられません。 outパラメータは自動的に割り当てられません。Value および Reference パラメーターは常に割り当てられます (値で渡されるか、デフォルト値が宣言されます)。

C#では、宣言のに値を割り当てることができますが、割り当てられていない変数を参照することはできません

于 2012-12-19T04:11:03.547 に答える
3

プログラムの後半で未定義の動作を防ぐために、変数を初期化することは常に良い習慣です。後の一部のコンパイラはこれを行う可能性がありますが、下のレバーでは、変数を定義していないことはコンパイラによってキャッチできず、非常に苦痛な頭痛につながる可能性があります。変数の膨大なリストがある場合、通常、大きな equals ステートメントを使用します。

int a,b,c,d,g;
a=b=c=d=g=0; //set all to zero

常に変数に値を格納することは、より大きな C++ 哲学の一部です。

于 2012-12-19T04:10:03.220 に答える
1

初期化ステートメントは、2 つの理由からint value = 0;、より好ましく、優れたプログラミング プラクティスです。

  1. 読みやすさの観点からは優れています

  2. 初期化されていない変数による問題の可能性を取り除きます (この場合ではありませんが、初期化が必要な他の多くの場合の問題を回避するための慣行です)。

于 2012-12-19T04:11:01.243 に答える