Рассмотрим следующее
int main() {
int a = 8;
int b = 10;
while (true) {
if (a /= 2 && b < 12) {
b++;
std::cout << b << std::endl;
}
else break;
}
return 0;
}
Теперь с ++ не является моим основным языком, но как с ++ оценивает это выражение if?
В этом случае, когда b>=12
, компилятор выдаетисключение «деление на ноль», но почему?
Теперь, если я оберну состояния в скобках, я не получу исключение.
if( (a /= 2) && (b < 12))
Это как-то связано с тем, как c ++ оценивает операторы?
Если проблема не в оценке:
Мне известно, что
a = (a/2 && b<12)
также не будет выполняться.
P Λ Q
не выполняетсядля P Λ ¬Q
но состояние P не должно быть затронуто?Почему обвиняется P
вместо ¬Q
?