Я работаю над экзаменом по С ++ и делаю несколько прошлых работ. Затем я наткнулся на эту задачу понимания кода. И мне интересно, почему значение не меняется на 4 в этом операторе if?
int found = 0, value = 5; if (!found || --value == 0) { cout << "danger"; } cout << "value =" << value << endl;
Потому что, если первое условие выполнено, второе даже не считается оценить. Чтобы оправдать ваши ожидания, поменяйте местами условия.
int found = 0, value = 5; if ( --value == 0 || !found) { cout << "danger"; } cout << "value =" << value << endl;
if (!found || --value == 0)
В операции логического ИЛИ, если первое условие выполнено, второе условие не будет оцениваться. Здесь !found - ИСТИНА, и он не будет выполняться --value, таким образом, его значение будет равно 5.
!found
--value