Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение условного оператора 
:(
    Опции темы
polin11
Дата 26.2.2019, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Выполнение условного оператора
Подскажите знающие люди новичку в С++
есть условный оператор:
1) if( condition1 && condition2 )
будет ли проверено условие condition2, если первое условие  condition1 ложно?
2) Соответственно if( condition1 || condition2 )
будет ли проверено условие condition2, если первое условие  condition1 верно?
Желательно ссылкой на документацию или какую-нибудь умную книгу или статью
PM MAIL   Вверх
kapbepucm
Дата 27.2.2019, 14:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Предположу, что зависит от оптимизаций компилятора. Например, мой g++ в первом случае не проверяет condition2, чтобы проверял, нужны извращения smile
Код
#include <iostream>

using namespace std;

bool condition1()
{
  cout << "  condition1 check" << endl;
  return false;  
}

bool condition2()
{
  cout << "  condition2 check" << endl;
  return true;  
}

bool condition_AND(bool c1, bool c2)
{
  return c1 && c2;
}

int main(void)
{
  cout << "normal check:" << endl;
  if (condition1() && condition2()) {}
  cout << "feature check:" << endl;
  if (condition_AND(condition1(), condition2())) {}
  return 0;
}


Это сообщение отредактировал(а) kapbepucm - 27.2.2019, 14:40


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
LeonidPr
Дата 27.2.2019, 15:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Думаю можно начать с этого
Short-circuit evaluation

А вот тут прям обсуждение того, что вы спрашиваете со ссылками на стандарты
Is short-circuiting logical operators mandated? And evaluation order?
--------------------
pkunzip.zip
PM MAIL   Вверх
xvr
Дата 27.2.2019, 15:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kapbepucm @  27.2.2019,  14:30 Найти цитируемый пост)
Предположу, что зависит от оптимизаций компилятора.

Не зависит. && и || работают по схеме shortcut - если результат после первой проверки известен, то вторая не выполняется.

С99 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf 

Глава 6.5.13 п4:
Цитата

Unlikethe bitwise binary&operator,the&&operator guarantees left-to-right evaluation;there  is  a  sequence  point  after  the  evaluation  of  the  first  operand.If  the  first  operandcompares equal to 0, the second operand is not evaluated.


Следующая глава, п4
Цитата

Unlikethe bitwise|operator,the||operator guarantees left-to-right evaluation; there isasequence  point  after  the  evaluation  of  the  first  operand.If  the  first  operand  comparesunequal to 0, the second operand is not evaluated


Плюсы найдите сами
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0636 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.