2014-02-13 4 views
1

Я работаю над домашним заданием и столкнулся с проблемой использования оператора AND внутри оператора while while. Вот упрощенный пример проблемы:И оператор внутри Оператор while в C++

int main() 
{ 
int a = 4; 
int b = 0; 
int c; 

while (a <= 10 && b <= 10) { 
    cout << "a " << a << endl; 
    cout << "b " << b << endl << endl; 
    ++a; 
    ++b; 
    } 
cout << "done" << endl; 

return 0 ; 
} 

Так что я хочу цикл в то время, чтобы работать до тех пор, как А и Б меньше или равно 10. Однако в то время как петли закончился, как только идет выше 10, как показано здесь: enter image description here

+3

_So Я хочу, чтобы петля в то время как для работы в качестве если оба a и b меньше или равны 10_. Так почему вы жалуетесь, когда 'a' превышает 10? –

ответ

2

Если a выше 10, то это излишним проверять b поскольку false && anything является false. Но это то, что вы хотите:

Так что я хочу, чтобы петля в то время, чтобы работать до тех пор, как А и Б меньше, чем или равно 10

Если вы хотите, чтобы войти в петлю, если любые переменных меньше или равны 10, вместо этого используйте ||.

Подробнее о Short-circuit evaluation, чтобы лучше понять это.

+0

Вздох. Не знаю, как я все это просматривал. Я должен быть замедлен. Спасибо. – user3304654

0

в то время как цикл выполняется точно, что вы хотите:

в то время как петля для запуска до тех пор, как А и Б меньше или равно 10

во время выхода из цикла, когда первый условие (a < = 10) является ложным.
Возможно, вам захочется пересмотреть логику вашей программы.

0

Просто измените условием при

while (a <= 10 && b <= 10) 

в

while (a <= 10 || b <= 10) 

Как OR условие ложно только как условие тестирования ложны ..

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