2017-02-03 1 views
-4

私は基本的な追加をC++でやりますが、表示する数に代わって大きな数字が表示されます。私はC++で基本的な追加をしようとしていますが、大きな数字が表示されています

#include <iostream> 

using namespace std; 

int main() 
{ 
    int x; 
    int y; 
    int sub = x + y; 

    cout<<"Enter First number:"<<endl; 
    cin>>x; 
    cout<<"Enter second number:"<<endl; 
    cin>>y; 
    cout << "The sum is: "<< sub << endl; 
    return 0; 
} 

これを実行すると、合計が「6996596」と表示されます。

+0

コンパイラが警告を無視しないでください。 – carlosdc

+1

'x'と' y'の値を得た後、 'sub = x + y'を動かします。それは、 'sub'を' x + y'に初期化しています。その値は未定義であるため、未定義の動作をします。 'C++ 'は遅れて評価されません。 – user975989

+0

レイジー評価。私はそれについても考えていなかった、@ user975989。いいですよ。 OPのどこが間違っていたのかを説明するための答えにそれを振り向ける価値がある。 – user4581301

答えて

5

subが作成されており、xyの前に設定されています。変数を宣言しても初期化しないと、スタック上にあったものから未知の値が得られます。

の可変属性をxyの後に移動すると、プログラムが正常に動作します。

+0

ありがとうございました。 – laquishabonquiquithe3rd

4

ユーザの入力を受け入れる前に、合計を計算しています。さらに、未定義の2つの変数を合計しているため、未定義の動作につながります。

関連する問題