если заявление и --variable - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю над экзаменом по С ++ и делаю несколько прошлых работ. Затем я наткнулся на эту задачу понимания кода. И мне интересно, почему значение не меняется на 4 в этом операторе if?

int found = 0, value = 5;
if (!found || --value == 0) {
    cout << "danger";
}
cout << "value =" << value << endl;

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Потому что, если первое условие выполнено, второе даже не считается оценить. Чтобы оправдать ваши ожидания, поменяйте местами условия.

int found = 0, value = 5;
if ( --value == 0 || !found) {
    cout << "danger";
}
cout << "value =" << value << endl;
0 голосов
/ 30 апреля 2018
if (!found || --value == 0)

В операции логического ИЛИ, если первое условие выполнено, второе условие не будет оцениваться. Здесь !found - ИСТИНА, и он не будет выполняться --value, таким образом, его значение будет равно 5.

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