Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
1

Как оптимизируются логические операторы?

02.09.2013, 06:12. Показов 1736. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Интуиция подсказывает, что компиляторы могут оптимизировать проверку условий. Например:
if(A && B)... В случае, если A==false, то нет смысла тратить процессорное время на проверку второго условия.

Тогда можно избежать лишних IF, например при проверке границ массива.
if((A>=0)&&(array[A]==5))...
В этом случае хотелось бы видеть оптимизацию. Без нее будет ошибка при попытке обратиться за границы массива.

С другой стороны, эта оптимизация может наоборот вызвать сбой логики.
if((A)&&(B++ > 0) )... Здесь нужно, чтоб "B" во время проверки увеличилась на 1. Чего не произойдет, если действует оптимизация.

И вопрос. Как эти случаи регламентированы в стандартах С++ и как компиляторы поступают? И в случае оптимизации могут ли компиляторы проверять логические условия не в том порядке, как ты их написал, а проверяя вначале наименее простые условия?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.09.2013, 06:12
Ответы с готовыми решениями:

Определить и вывести количество дней между двумя датами (логические операторы и операторы ветвлений)
Задачка Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить...

Записать логические выражения, используя условные операторы, операции отношений и логические операции
Записать логические выражения, используя условные операторы, операции отношений и логические...

Операторы отношений и логические операторы
Всем добрый день. Очередной день изучения Г.Шилда С++ базовый курс, дошел до Операторов отношений,...

Операторы отношений и логические операторы
изучаю C++ по Шилдту, и частенько встречаются не рабочии коды и приходится доделывать под себя, но...

5
Неэпический
 Аватар для Croessmah
18116 / 10702 / 2063
Регистрация: 27.09.2012
Сообщений: 26,958
Записей в блоге: 1
02.09.2013, 06:23 2
Цитата Сообщение от Pro_ha Посмотреть сообщение
Как эти случаи регламентированы в стандартах С++ и как компиляторы поступают?
Так и регламентированы:
Как оптимизируются логические операторы?


с остальными аналогично, только букавки меняются
0
Неэпический
 Аватар для Croessmah
18116 / 10702 / 2063
Регистрация: 27.09.2012
Сообщений: 26,958
Записей в блоге: 1
02.09.2013, 06:25 3
Цитата Сообщение от Pro_ha Посмотреть сообщение
как ты их написал
это left-to-right
0
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
02.09.2013, 06:46  [ТС] 4
Ясно, значит слева на право.
И применяется оптимизация? Даже если в пропускаемом логическом блоке должна измениться переменная или вызывается функция?
0
Неэпический
 Аватар для Croessmah
18116 / 10702 / 2063
Регистрация: 27.09.2012
Сообщений: 26,958
Записей в блоге: 1
02.09.2013, 06:48 5
Цитата Сообщение от Pro_ha Посмотреть сообщение
Даже если в пропускаемом логическом блоке должна измениться переменная или вызывается функция?
Да. Так что стройте подобные конструкции учитывая эту особенность.
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
02.09.2013, 09:40 6
Pro_ha, может будет интересно: ленивые вычисления.
0
02.09.2013, 09:40
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.09.2013, 09:40
Помогаю со студенческими работами здесь

Логические операторы
Верно ли уж так на все 100%, что выполнение логических операций по укороченной схеме заведомо...

UB и логические операторы
Является ли следующее выражение UB???? ptr != 0 && *ptr++ нужно рассмотреть 2 варианта: 1)...

Логические операторы в выражениях
Здравствуйте, в одном из тестов для новичков наткнулся на вопрос: каков результат работы...

Не работают логические операторы
Выдает такую ошибку, в интернете не понял как решить, тренируюсь по пособию, там код слово в слово


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru