является оно частью более сложного выражения, в том числе
(x || f() ) && (y || g())
или нет, стит ли оно само по себе.
Место в стандарте, гласящее, что любое выражение ДОЛЖНО вычисляться "как на абстрактной машине" включая все побочные эффекты и только потом оптимизатор имеет право что-то скоращать, если это не поменяет результат - приводить?
Ну так вот
x || f();
это всего лишь одно из многих отдельно стоящих выражений, равноправное с
a = 0;
и
++i;
Оно должно быть вычислено. Как оно вычисляется - тоже описано.
Нечего плакаться, что основное содержание данного форума - хохлосрач, раз тут тот уровень, который на электрониксе идёт в разделе "в помощь начинающему", тут идёт на правах "трюков".