
- •1. Цель работы
- •2. Базовые понятия языка
- •2.1. Алфавит языка Си
- •2.2. Константы
- •2.3. Идентификатор
- •2.4. Объявление переменных
- •2.5. Стандартные типы данных
- •2.6. Данные вещественных типов
- •2.7. Инициализация переменных
- •3. Операции языка си
- •3.1. Арифметические операции
- •3.2. Поразрядные операции
- •3.3. Операции отношения (сравнения)
- •3.4. Логические операции
- •3.5. Операции присваивания
- •3.6. Операция sizeof
- •3.7. Операция условие
- •3.8. Разделитель точка с запятой
- •3.9. Приоритеты операций и порядок вычислений
- •4. Операторы языка си
- •4.1. Составной оператор
- •4.2. Условный оператор
- •4.3. Оператор switch
- •4.4. Оператор break
- •4.5. Оператор for
- •4.6. Оператор while
- •4.7. Оператор do while
- •4.8. Оператор continue
- •4.9. Оператор goto
- •5. Указатели, массивы, строки
- •5.1. Указатели
- •5.2. Массивы
- •5.3. Строки
- •5.6. Двумерные массивы
- •5.7. Инициализация массивов
- •5.8. Связь указателей и массивов
- •6. Функции
- •6.1. Определение и вызов функций
- •6.2. Передача параметров функции main
- •7. Структуры и объединения
- •7.1. Структуры
- •7.2. Объединения (смеси)
- •7.3. Поля битов
- •8. Ввод-вывод
- •8.1. Консольный ввод-вывод
- •8.2. Потоковый файловый ввод-вывод
- •9. Вопросы для самостоятельного изучения
- •10. Порядок выполнения лабораторных работ и содержание отчета
- •11. Литература
3.9. Приоритеты операций и порядок вычислений
Табл. 6 Приоритеты операций
Ранг |
Операция |
Ассоциативность |
1 |
() [] -> . |
справа налево |
2 |
! ~ -(смена знака) ++ -- &(адрес) * (тип) sizeof |
слева направо |
3 |
* / % |
справа налево |
4 |
+ - |
справа налево |
5 |
<< >> |
справа налево |
6 |
< <= >= > |
справа налево |
7 |
== != |
справа налево |
8 |
& |
справа налево |
9 |
^ |
справа налево |
10 |
| |
справа налево |
11 |
&& |
справа налево |
12 |
|| |
справа налево |
13 |
? |
слева направо |
14 |
= *= /= %= += -= &= ^= |= <<= >>= |
слева направо |
15 |
, |
справа налево |
В языке СИ операции с высшими приоритетами вычисляются первыми. Наивысшим приоритетом является приоритет равный 1. Операции одного ранга имеют одинаковый приоритет, и если их в выражении несколько, то они выполняются в соответствии с правилом ассоциативности, либо слева направо, либо справа налево. Приоритеты и порядок операций приведены в табл. 6.
4. Операторы языка си
4.1. Составной оператор
Составной оператор представляет собой несколько операторов и объявлений, заключенных в фигурные скобки:
{ оператор_1;
оператор_2;
...
оператор_n;}
Заметим, что в конце составного оператора точка с запятой не ставится.
4.2. Условный оператор
Формат оператора:
if (выражение) оператор-1; [else оператор-2;]
Выполнение оператора if начинается с вычисления выражения.
Далее выполнение осуществляется по следующей схеме:
если выражение истинно (т.е. отлично от 0), то выполняется оператор-1.
если выражение ложно (т.е. равно 0),то выполняется оператор-2.
если выражение ложно и отсутствует оператор-2 (в квадратные скобки заключена необязательная конструкция), то выполняется следующий за if оператор.
Пример:
if (i < j)i++;
else {j = i-3; i++; }
Этот пример иллюстрирует также и тот факт, что на месте оператор-1, так же как и на месте оператор-2 могут находиться сложные конструкции.
Допускается использование вложенных операторов if. Чтобы сделать программу более читабельной, рекомендуется группировать операторы и конструкции во вложенных операторах if, используя фигурные скобки даже если они не требуются. Если же фигурные скобки опущены, то компилятор связывает каждое ключевое слово else с наиболее близким if, для которого нет else.
Примеры:
if (t>b)
{
if (b < r) r=b;
}
else r=t;
Если же в программе опустить фигурные скобки, стоящие после оператора if, то программа будет иметь следующий вид:
if ( a>b )
if ( b < c ) t=b;
else r=t;
В этом случае else воспринимается как часть второго оператора if.