Умный дом

Оператор предшествования

Есть одна «заморочка» в использовании встроенных опера­торов - при комбинации нескольких операторов в одном выражении порядок выполнения операций определяется предустановленным уровнем приоритетности для каждого. Например, результат выражения 5 + 2*10 всегда равен 25 и никогда 70, поскольку оператор умножения имеет больший приоритет, чем оператор сложения. В итоге 2 всегда умножа­ется на 10 прежде, чем складывается с 5. ^

Мы можем переопределить приоритет, взяв в скобки опе­рацию, с выполнения которой хотели бы начать. (5 + 2) * 10, например, принимает значение 70.

Для операторов, о которых я говорил, предопределенные уровни приоритетности написаны ниже. Оператор, кото­рый выше, имеет больший приоритет, чем тот, что ниже. Операторы, расположенные в одну линию, имеют порядок определения слева направо.

Логическое NOT арифметическое (*, /, %) арифметическое(+, -) отношение (<, >, <=, >=) отношение (= =, !=) логическое AND логическое OR присваивание

Например, для определения четности ival мы можем на­писать:

! ival % 2 // не совсем хорошо

Наше выражение проверяет результат оператора остатка. Если ival четно, результат нулевой и логический оператор НЕ становится истинным. Иначе, если результат ненулевой, логический оператор НЕ принимает значение false. Во вся­ком случае, так нам хотелось бы.

К сожалению, результат выражения совершенно иной. Наше выражение всегда будет ложным, исключая значение ival, равное нулю!

Более высокий приоритет оператора логического отри­цания приводит к тому, что он выполняется первым, дей­ствуя на ival. Если ival имеет ненулевое значение, резуль­тат-ложный, в противном случае - истинный. Полученное значение становится левой частью операции получения остатка. False становится «О» при использовании в ариф­метических операциях, a true принимает значение «1». В результате порядка выполнения операций выражение превращается в 0%2 для любых значений ival за исключе­нием нуля.

Хотя мы не хотели получить данный результат, он не является ошибкой, по крайней мере, языковой ошибкой. Это лишь неправильное представление нашей задуманной программной логики. Компилятор об этом, конечно, не до­гадывается. Порядок выполнения - это одна из причин, зат­рудняющих программирование на С++. Для правильного выполнения выражения мы должны изменить порядок вы­полнения с помощью скобок:

! (ival % 2) // ok

Чтобы избежать этих проблем, необходимо поближе по­знакомиться с порядком следования операторов в С++. Я вам не помощник, в том смысле, что раздел не содержит ни пол­ного перечня операторов, ни полного представления поряд­ка следования операций - того, что я показал, должно хва­тить только для начала.

Умный дом

Способы строительства частных домов

Строительство частных домов является одним из самых популярных направлений в строительной отрасли. Существует множество способов и технологий, которые можно использовать при строительстве дома. В этой статье мы рассмотрим наиболее распространенные …

Как построить современный умный дом?

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

5 советов, как правильно обустроить домашний офис

Домашний кабинет – пространство, в котором должны быть созданы все условия для комфортной работы. Основные атрибуты – это рабочий стол и стул, компьютер, наушники с микрофоном и другие важные мелочи. …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Партнеры МСД

Контакты для заказов оборудования:

Внимание! На этом сайте большинство материалов - техническая литература в помощь предпринимателю. Так же большинство производственного оборудования сегодня не актуально. Уточнить можно по почте: Эл. почта: msd@msd.com.ua

+38 050 512 1194 Александр
- телефон для консультаций и заказов спец.оборудования, дробилок, уловителей, дражираторов, гереторных насосов и инженерных решений.