2013-02-10 8 views
-3

Любая помощь? Когда я вставляю два числа, он говорит, что ответ не инициализируется ...?Ответ переменной используется без инициализации?

#include <iostream> 
using namespace std; 
int main() 
{ 
    int num; 
    int num2; 
    int working; 
    int answer; 
    int uChoice; 
    int work(int one, int two, int todo); 
    cout << "Welcome to my Basic Mini-Calculator!" << endl; 
    do 
    { 
     cout << endl << "What do you want to do?" << endl; 
     cout << "1) Add" << endl; 
     cout << "2) Subtract" << endl; 
     cout << "3) Multiply" << endl; 
     cout << "4) Divide" << endl; 
     cout << endl << "Waiting for input... (enter a number): "; 
     cin >> uChoice; 
     cout << endl; 

    } while(uChoice != 1 && uChoice != 2 && uChoice != 3 && uChoice != 4); 

    switch (uChoice) 
    { 
    case 1: 
     cout << endl << "You chose addition." << endl; 
     cout << "Enter a number: "; 
     cin >> num; 
     cout << "Enter another number: "; 
     cin >> num2; 
     working = num + num2; 
     cout << "Your answer is: " << answer; 
     break; 

    case 2: 
     cout << endl << "You chose subtraction." << endl; 
     cout << "Enter a number: "; 
     cin >> num; 
     cout << "Enter another number: "; 
     cin >> num2; 
     working = num - num2; 
     cout << "Your answer is: " << answer; 
     break; 

    case 3: 
     cout << endl << "You chose multiplication." << endl; 
     cout << "Enter a number: "; 
     cin >> num; 
     cout << "Enter another number: "; 
     cin >> num2; 
     working = num * num2; 
     cout << "Your answer is: " << answer; 
     break; 

    case 4: 
     cout << endl << "You chose division." << endl; 
     cout << "Enter a number: "; 
     cin >> num; 
     cout << "Enter another number: "; 
     cin >> num2; 
     working = num/num2; 
     cout << "Your answer is: " << answer; 
     break; 
     return 0; 
    } 
} 
+3

Возможно, вы имеете в виду «работающий», а не «ответ» ... –

+0

@MatsPetersson Nice catch! – Plynx

+1

Ваш код никогда не присваивает переменной 'answer' перед ее печатью. Это неопределенное поведение. – dasblinkenlight

ответ

3

Это как раз то. Вы объявляете ответ:

int answer; 

тогда вы используете его много раз без его инициализации или присвоения любых значений к нему:

cout << "Your answer is: " << answer; 
0

Вы используете answer никогда не присваивание значения к нему, точно так же как предупреждения состояний :-)

возможно, что разделы, как заявление:

working = num + num2; 
cout << "Your answer is: " << answer; 

должны фактически иметь:

answer = num + num2; 

вместо этого.

В этом случае вы, вероятно, можете вообще избавиться от working.

Смежные вопросы