if( (A) && (B) )
{
//do something
}
else
//do something else
Вопрос в том, будет ли инструкция немедленно разорваться на else, если A было FALSE. Будет ли B даже оценен?
Я спрашиваю об этом в том случае, если B проверяет достоверность индекса массива say array [0], когда массив фактически пуст и имеет нулевые элементы. Поэтому бросаем segfault, потому что мы пытаемся получить доступ к тому, что находится за пределами массива. Конкретно
if( (array.GetElements() > 0) && (array[0]))
array[0]->doSomething();
else
//do nothing and return
Это может быть опасно, если массив [0] действительно получает оценку, потому что он segfaults без первой проверки слева от '& &'. Приоритет говорит мне, что левая сторона, безусловно, имеет приоритет, но она не говорит мне, что она не будет оценивать правую сторону, если левая - ЛОЖЬ.