Гарантируется ли левая-правовая оценка логических операторов (&&
||
)?
Скажем, у меня есть это:
SDL_Event event;
if (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
// do stuff
}
}
Гарантировано ли это как это?
SDL_Event event;
if (SDL_PollEvent(&event) && event.type == SDL_QUIT) {
// do stuff
}
Это также может быть очень важно, допустим, у нас есть два требования: a
и b
. Требование a
гораздо с большей вероятностью завершится неудачей, чем b
. Тогда более эффективно говорить if (a && b)
, чем if (b && a)
.