Гарантируется ли левая-правовая оценка логических операторов (&& ||)?
Скажем, у меня есть это:
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).