Как C ++ обрабатывает &&? (Оценка короткого замыкания)

Когда встречается (bool1 && bool2), делает ли c ++ когда-либо попытку проверить bool2, если bool1 был найден ложным или игнорирует его так, как это делает PHP?

Извините, если это слишком простой вопрос, но я действительно не мог найти упоминания об этом ни в Schildt, ни в Интернете.

Да, оператор && в C ++ использует оценку короткого замыкания, так что если bool1 оценивает значение false это не bool2 оценке bool2 .

«Оценка короткого замыкания» – это причудливый термин, который вы хотите найти в Google и искать в индексах.

C ++ использует логику короткого замыкания, поэтому, если bool1 является ложным, ему не нужно проверять bool2 .

Это полезно, если bool2 фактически является функцией, которая возвращает bool или использует указатель:

 if ( pointer && pointer->someMethod() ) 

без логики короткого замыкания, он сработает при разыменовании указателя NULL, но с логикой короткого замыкания он работает нормально.

Это правильно (короткое поведение cicuit). Но будьте осторожны: короткое замыкание останавливается, если вызываемый оператор не является встроенным оператором, а определяемым пользователем operator&& (тем же самым с operator|| ).

Ссылка в этом SO

Короткие замыкания оператора && в C ++ – если bool1 был ложным в вашем примере, bool2 не будет проверен / выполнен.

Это называется оценкой короткого замыкания (Wikipedia)

Оператор && является оператором короткого замыкания в C ++, и он не будет оценивать bool2, если bool1 является ложным.

Оценка короткого замыкания обозначает семантику некоторых булевых операторов в некоторых языках программирования, в которых второй аргумент выполняется или оценивается только в том случае, если первый аргумент недостаточен для определения значения выражения: например, когда первый аргумент И функция оценивает значение false, общее значение должно быть ложным; и когда первый аргумент функции OR имеет значение true, общее значение должно быть истинным.

В C ++ оба && и || операторы используют оценку короткого замыкания.

То, что вы имеете в виду, это оценка короткого замыкания . Я думал, что это может быть специфический компилятор, однако эта статья, с которой я связан, показывает ее как специфичную для языка, а C ++ – придерживаться. Если это действительно специфический компилятор, я не могу представить компилятор, который бы не следил за ним. Компилятор изо дня в день, который я использую в настоящий момент, VS 2008 года. В основном это будет следовать за приоритетом оператора, и как только результат условия будет гарантирован,

  • Как работают исключения (за кадром) в c ++
  • Почему я получаю строку, не называю тип Error?
  • lvalue для значения неявного преобразования
  • Что такое неопределенная ссылка / неразрешенная ошибка внешнего символа и как ее исправить?
  • C # Regex Split - все внутри квадратных скобок
  • Что означает эта ошибка GCC «... усечение, усеченное, чтобы соответствовать ...»?
  • Петля через объекты в C #
  • Каковы различия между различными параметрами синхронизации streamов в C #?
  • Как определить текущую нажатую клавишу?
  • Область друзей в C ++
  • Сохранить int в массиве char?
  • Interesting Posts

    Excel – тестовые 3 ячейки

    Как получить доступ к существующему экземпляру Microsoft Word, используя последнее связывание

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

    Какие компоненты ПК оказывают наибольшее влияние на время компиляции Visual Studio?

    Visual Studio 2012 Web Publish не копирует файлы

    Почему флеш-видео потребляет столько CPU?

    Полноэкранный режим для Java-приложений на OSX Lion

    Легкий способ конвертировать длинный в широкий формат с подсчетами

    Как я могу создать свою собственную структуру данных с помощью iteratorа, который возвращает изменчивые ссылки?

    Oracle.ManagedDataAccess и ORA-01017: неверное имя пользователя / пароль; отказ в регистрации

    Как сказать rsync пропустить файлы на поврежденном блоке жесткого диска, а не застревать, пытаясь его прочитать

    Уведомление Не показывать

    Ограничить перетаскиваемые объекты jQuery из перекрытия / столкновения с элементами-братьями

    Полноэкранный режим в Firefox на Mac OS X?

    условие имеет длину> 1, и только первый элемент будет использоваться в if else statement

    Давайте будем гением компьютера.