Правила записи программы на языке Си 5 Правила формального описания синтаксиса языка программирования 6
Вид материала | Лекции |
Содержание6.11.Операции отношения 6.12.Логические операции Результаты логических операций 6.13.Операция определения размера данных 6.14.Приоритеты операций Таблица приоритетов рассмотренных выше операций |
- Правила преобразований из одного типа в другой и правила приведения типов в языке Object, 19.03kb.
- Оформление программы на языке Паскаль. Оператор вывода. Описание переменных. Оператор, 186.34kb.
- Программа наименование дисциплины Латинский язык (1,2 уровни), 154.48kb.
- Экзаменационные вопросы по курсу "Методы программирования", 32.44kb.
- Вопросы по курсу Программирование на языке высокого уровня (яву), 102.97kb.
- Структура программы в языке программирования С++. Обмен данными между функциями (параметры, 37.24kb.
- Программа курса " Азы программирования", 26.19kb.
- Структура программы языка Турбо Паскаль Программа на языке Турбо Паскаль имеет вид, 792.5kb.
- Эволюция языков программирования, 493.92kb.
- Структура программы на языке Turbo Pascal, 26.15kb.
6.11.Операции отношения
Представляют собой двуместные операции, предназначенные для сравнения операндов. В языке Си имеются шесть операций отношения:
> больше,
< меньше,
>= больше или равно,
<= меньше или равно,
== равно,
!= не равно.
Действие операций отношения заключается в сравнении первого и второго операнда. Если операнды не удовлетворяют условию отношения, то результат операции равен нулю, т.е. условие ложно. Если операнды удовлетворяют условию отношения, то результат отношения не равен нулю, т.е. условие истинно.
Например:
int a,b;
a = 5;
b = ( a + 5 <= 4 ); /* b = 0 */
Из сказанного выше следует, что в языке Cи отсутствует специальный логический тип данных. Его заменяет целый тип, причем логическому понятию "ложно" соответствует значение 0, а логическому понятию "истина" - любое отличное от 0 целое число.
Операции отношения выполняются слева направо. При нечетком понимании их действия возможно получение, вообще говоря, неверного результата. Например, с точки зрения синтаксиса языка Си выражение a
Чтобы это выражение соответствовало математическому смыслу, его нужно разбить на две части a < x и x < b и связать его логической операцией && ("и"), т.е. (a < x) && (x < b). Такая запись читается так : если a меньше x и x меньше b, то результат - истина.
6.12.Логические операции
Логические операции служат для построения сложных условий, подобных приведенному в предыдущем параграфе. В языке Си определены следующие логические операции:
! логическое отрицание (одноместная),
&& логическое "и" (двуместная),
|| логическое "или" (двуместная).
В отличие от битовых операций, логические операции выполняются не над битами, а над значениями операндов. Результаты логических операций определяются следующей таблицей:
Результаты логических операций
op1 | op2 | !op1 | op1 && op2 | op1 || op2 |
0 | 0 | не 0 (1) | 0 | 0 |
0 | не 0 (1) | не 0 (1) | 0 | не 0 (1) |
не 0 (1) | 0 | 0 | 0 | не 0 (1) |
не 0 (1) | не 0 (1) | 0 | не 0 (1) | не 0 (1) |
Логические операции выполняются слева направо, причем для двуместных операций второй операнд может не вычисляться, если значение первого операнда однозначно определяет значение операции. Это происходит в том случае, если первый операнд для && равен 0 (результат операции тоже 0) и если первый операнд для || не 0 (результат операции тоже не 0).
6.13.Операция определения размера данных
В некоторых случаях совершенно необходимо иметь возможность определять размеры данных, создаваемых пользователем. Это позволяет писать программы, независимые от компьютера, на котором они выполняются, а также упростить процедуру внесения корректировок в программы. Для определения размера данных в языке Си используется операция sizeof. Первая форма операции выглядит следующим образом:
БНФ:
"sizeof(" тип ")"
Результат этой формы операции - размер данного соответствующего типа в байтах, например, sizeof(float) даст в результате 4.
Вторая форма операции выглядит следующим образом:
БНФ:
"sizeof " имя_данного
Результат этой формы операции - размер памяти, отведенной под соответствующее данное в байтах, например, после описания массива символов char name[40];, операция sizeof name даст в результате 40.
6.14.Приоритеты операций
Приоритеты и направление рассмотренных выше операций сведены в следующую таблицу. Операции одинакового приоритета объединены в группы, чем выше положение группы в таблице, тем выше приоритет операций группы.
Таблица приоритетов рассмотренных выше операций
-
Операции одного приоритета
Направление выполнения операции.
! ~ ++ -- (тип) sizeof
* / %
+ -
<< >>
< <= > >=
== !=
&
|
&&
||
= *= /= %= += -= <<= >>= &= = |=