2017-07-30 1 views
-4

を印刷し、私はCを学ぶしようとしています++と私は非常に迷惑な矛盾に出くわした:C++、複数の整数を宣言することは、異なる値に

#include <iostream> 
using namespace std; 

int main(){ 
    int var1,var2,var3,var4,var5,var6,var7; 

    cout << var1 << endl; 
    cout << var2 << endl; 
    cout << var3 << endl; 
    cout << var4 << endl; 
    cout << var5 << endl; 
    cout << var6 << endl; 
    cout << var7 << endl; 

    return 0; 
} 

それは次の値を返します。

0 
4196128 
0 
570985680 
32767 
0 
0 

なぜ私は別の値を取得していますこれらの設定されていない値は?各変数に0を付けてはいけませんか?私が得ているアウトプットは何を表していますか?

+0

あなたはそれらを初期化していないので、ランダムな値を持っています。 – Arkady

+1

"私が得ている出力は何ですか?"、未定義の動作です。 – George

答えて

4

初期化されていないローカル変数の値はであり、値はで、ランダムに見えます。不確かな値を読み取るとundefined behaviorになります。

1

未初期化からの読み取りintは未定義の動作です。表示される出力は、変数に予約されているメモリ位置に現在格納されているデータです。

しかし、何かが起こる可能性があるので、それは重要ではありません。重要なことは、未定義の動作を阻止することであり、これが最良のあなたの変数を初期化することで、ここで行われます。

int var1 = 0; 
int var2 = 0; 
// and so on 

はまた、あなたが適切な警告レベルを使用する場合は、あなたのコンパイラは確かにこのことについて警告を表示することができますことに注意してください。コンパイラのドキュメントでそれを調べて、警告を無視しない習慣を身につけてください。

関連する問題