Операции отношения и логические операции.

Основные операции отношения:

·== эквивалентно — проверка на равенство;

·!= не равно — проверка на неравенство;

·< меньше;

·> больше;

·<=меньше или равно;

·>= больше или равно.

Операции отношения используются при организации условий и ветвлений. Результатом этих операций является 1 бит, значение которого равно 1, если результат выполнения операции - истина, и равно 0, если результат выполнения операции - ложь.

Логические операции делятся на две группы:

·условные;

·побитовые.

Условные логические операции чаще всего используются в операциях проверки условия if и могут выполняться над любыми объектами. Результат условной логической операции:

·1 если выражение истинно;

·0 если выражение ложно.

Вообще, все значения, отличные от нуля, интерпретируются условными логическими операциями как истинные.

Основные условные логические операции:

·&& - И (бинарная) — требуется одновременное выполнение всех операций отношения;

·|| - ИЛИ (бинарная) — требуется выполнение хотя бы одной операции отношения;

·! - НЕ (унарная) — требуется невыполнение операции отношения.

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

Основные побитовые логические операции в языке Си:

·& конъюнкция (логическое И) - бинарная операция, результат которой равен 1 только когда оба операнда единичны (в общем случае - когда все операнды единичны);

·| дизъюнкция (логическое ИЛИ) - бинарная операция, результат которой равен 1 когда хотя бы один из операндов равен 1;

·~ инверсия (логическое НЕ) - унарная операция, результат которой равен 0 если операнд единичный, и равен 1, если операнд нулевой;

·^ исключающее ИЛИ - бинарная операция, результат которой равен 1, если только один из двух операндов равен 1 (в общем случае если во входном наборе операндов нечетное число единиц).

Операции отношения и сравнения имеют более низкий приоритет, чем арифметические операции, так что выражение i < lim-1 будет воспринято как i < (lim-1). Приоритет операции && выше, чем | |, но обе имеют приоритет ниже, чем операции сравнения и отношения.

ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХ В СИ.

В СИ, как и в других языках, выполняются автоматические и явные преобразования типов данных. Преобразования выполняются автоматически, если в выражении присутствуют данные разных типов. Рассмотрение таких преобразований предоставляется для самостоятельной проработки. Для явного преобразования типов используется унарный оператор, называемый приведением. Конструкция вида

(имя-типа) выражение

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

Например, в СИ аргумент библиотечной функции sqrt (извлечение квадратного корня) должен иметь аргумент типа double. Поэтому, если n есть целое число, то при извлечении квадратного корня следует написать

sqrt((double) n).

При этом вырабатывается значение n типа double. Сама же переменная n тип не изменяет.

Замечание. Функции преобразования строка в int, строка в double и ряд других функций преобразования типа данных описаны в файле stdlib.h.

В C++ различают явное и неявное преобразование типов данных. Неявное преобразование типов данных выполняет компилятор С++, ну а явное преобразование данных выполняет сам программист. О преобразовании типов данных скажу следующее: «Результат любого вычисления будет преобразовываться к наиболее точному типу данных, из тех типов данных, которые участвуют в вычислении». Для наглядного примера представлю таблицу с преобразованиями типов данных. В таблице рассмотрим операцию деления. В качестве целочисленного типа данных возьмем int, ну и вещественный тип данных у нас будет float.

Таблица 1 — Явное и неявное преобразование типов данных в С++
x y Результат деления Пример
делимое делитель частное x = 15 y = 2
int int int 15/2=7
int float float 15/2=7.5
float int float 15/2=7.5

Из таблицы видно, что меняя переменные различных типов данных местами, результат остается тот же (в нашем случае это делимое и делитель). О неявном преобразовании типов данных все. Что же касается явного преобразования, то оно необходимо для того чтобы выполнять некоторые манипуляции, тем самым меняя результат вычисления. Самый простой способ явного преобразования типов данных, пример: допустим нам необходимо разделить такие числа 15 и 2, делим! 15/2=7. Результат тот же, что и в таблице. Но если сделать незначительные преобразования, например: 15.0/2=7.5 при таком делении число 15 является вещественным, значит и результат будет вещественный. Само число 15 с точки зрения математики не изменилось, ведь 15=15.0. Этот же прием можно было применить к двойке, результат был бы тем же, а можно было сразу к двум числам, но зачем ,если хватает одного из двух.

Еще один способ явного преобразования типов данных:

  float(15) / 2 // результат равен 7.5, число 15 преобразуется в вещественный тип данных float. double(15) / 2 // результат равен 7.5 – тоже самое!!!

Наши рекомендации