Рубрики

Порядок операндов для логических операторов

Порядок операндов логических операторов &&, || важны в C / C ++.

В математике логические операции И, ИЛИ и т. Д.… Являются коммутативными. Результат не изменится, даже если мы поменяем RHS и LHS оператора.

В C / C ++ (может быть и на других языках), даже если эти операторы коммутативны, их порядок является критическим. Например, см. Следующий код,

// Обходим каждый альтернативный узел

while( pTemp && pTemp->Next )

{

   // Переходим к следующему узлу

   pTemp = pTemp->Next->Next;

}

Первая часть pTemp будет оценена относительно NULL, а затем pTemp-> Next . Если pTemp-> Next помещается первым, указатель pTemp будет разыменован, и произойдет ошибка времени выполнения, когда pTemp имеет значение NULL.

Обязательно следовать порядку. Infact, это помогает в создании эффективного кода. Когда указатель pTemp равен NULL, вторая часть не будет оцениваться, поскольку гарантировано, что результатом выражения AND (&&) будет 0.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Порядок операндов для логических операторов

0.00 (0%) 0 votes