2013-12-16 2 views
0

Итак, в настоящее время я изучаю код с использованием C++. Я натолкнулся на следующий код ниже.Confused по следующему коду

// ======================= 
    // Lesson 2.4.3 - Do while 
    // ======================= 

    #include<iostream> 
    using namespace std; 

    int main() 
    { 
     bool condition = false; 

     do 
     { 
     cout << "Enter a 0 to quit or 1 to continue: "; 
     cin >> condition; 
     } 

     while (condition); 
    } 

Почему C++ автоматически знает, что 0 прерывает цикл и что 1 продолжает цикл? Это связано с командой, зная, что 0 = false и что что-то выше верно? Спасибо тем, кто может помочь.

+0

Проверьте эту тему:. Http: // StackOverflow. com/questions/4276207/is-cc-bool-type-always-warranty-to-be-0-or-1-when-typecasted-to-int – taocp

ответ

1

Переменная condition имеет тип bool, поэтому ее значения могут быть true или false. Когда это ложно, цикл завершается. При вводе и выводе для bool значение 0 ложно и 1 истинно.

2

Вот как работает логическая логика. 0 - false, ничего не равно 0.

+0

А, я думал, что это что-то связано с этим, но просто не был на 100% уверен. Спасибо за ваш ответ :) – BroooksyBearx

+0

Библиотека C++ достаточно умна, чтобы анализировать целое число как логическое. Поэтому, когда пользователь вводит 0, он знает, чтобы установить условие на 'false' – Paladine

+0

Я бы не сказал, что это так, как работает« логическая логика ». Я бы сказал, что так работает логическая логика в c/C++ *. Я вырос на C++, поэтому он удивил меня, как многие другие языки просто не позволяют вам принуждать ints к таким типам. – neminem

1

Это потому, что while (0) вычисляет false, поэтому завершает цикл.

+0

Спасибо за ваш ответ :) – BroooksyBearx

-1

, потому что после того, как вход считывается условие проверяется while (condition);

while (condition = true); 

первый код получает значение выше по умолчанию

Это означает, что код в теле дел в то время как цикл будет цикл в то время как значение условия истинно (1)

+0

Это никогда не закончится. (Или до выключения. Что бы ни случилось первым) – usr2564301

+0

Что вы имеете в виду? – Luke

+0

Назначение всегда возвращает свое новое значение, в вашем случае 'true'. Итак, ваша петля '{..} while (true);' - кодовая табличка Neverending Story. – usr2564301

0

Переменная bool может иметь одно условие, то есть true или false. 0 считается ложным, а любое значение, отличное от 0, считается истинным. Таким образом, условие, которое Вы написали это (если условие = истина

while(!0) // body opf while will execute 

и когда условие = ложь это, C++ будет интерпретировать это как этот

while(0) // and body of do while will not execute. 
Смежные вопросы