Переменная Удержание данных в операторе while - PullRequest
0 голосов
/ 30 августа 2008

Я знаю, что я должен что-то упустить, но в выражении while как переменная хранит данные, когда она завершает первый проход и переходит во второй проход?


{

int num1 = 0 ;
int num2 = 0;
int num3 = 0;

while (num1 < 10)   

{cout << "enter your first number:  ";
cin >> num1;

cout << "Enter your second number:  ";
cin >> num2;

num1 = num1 + num2 ; 

    cout << "Number 1 is now: " << num1 <<endl;

    cout << "Enter Number 3: " ;
    cin >> num3;

    num1 = num1 + num3;

    cout << "Number 1 is now: " << num1 << endl;
    num1++;
};

В этом коде. Переменная не содержит данные. Я не уверен, что я делаю не так!

Ответы [ 4 ]

2 голосов
/ 30 августа 2008

Мне не совсем понятно, о чем вы спрашиваете, но переменные будут сохранять свое значение для каждой итерации цикла, если они объявлены вне самого цикла. Например:

int a = 0;

while(a < 10)
{
    int b = 0;

    cout << "a: " << a << " b: " << b << "\n";

    a++;
    b++;
}

В приведенном выше примере значение b всегда будет равно 0, поскольку оно объявлено внутри цикла и каждый раз инициализируется повторно, тогда как a будет сохранять свое значение и увеличиваться при каждой итерации. Если бы b был объектом, а не int, его конструктор и деструктор вызывали бы каждую итерацию.

2 голосов
/ 30 августа 2008

Является ли num1 переменной, с которой у вас проблемы? Эта строка:

cin >> num1;

устанавливает num1 в значение, введенное пользователем. Поэтому значение, рассчитанное для него в предыдущем цикле, каждый раз перезаписывается новым вводом.

1 голос
/ 01 сентября 2008

Понимаете ли вы, что когда вы говорите "num1", вы каждый раз ссылаетесь на одну и ту же переменную, и что каждый раз, когда вы меняете num1, вы заменяете предыдущее значение?

1 голос
/ 30 августа 2008

Я не уверен, что понимаю ваш вопрос. В C любые данные, которые не были перезаписаны, переносятся в следующую итерацию цикла, и представьте, что C ++ работает примерно так же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...