Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы программирования. Учебно-методический комплекс.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

Самый обычный вид оператора - оператор выражение. Он состоит из выражения, за которым следует точка с запятой. Например: * англ. dereference - получить значение объекта, на который указывает данный указатель. (прим. перев.)

a = b*3+c;

cout << "go go go"; lseek(fd,0,2);

Простейшей формой оператора является пустой оператор:; Он не делает ничего. Однако он может быть полезен в тех

случаях, когда синтаксис требует наличие оператора, а вам оператор не нужен.

Блоки Блок - это возможно пустой список операторов, заключенный в

фигурные скобки:

{ a=b+2; b++; }

Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.

Лекция 4 Операторы if

Программа в следующем примере осуществляет преобразование дюймов в сантиметры и сантиметров в дюймы; предполагается, что вы укажете единицы измерения вводимых данных, добавляя i для дюймов и c для сантиметров:

#include

main()

{

const float fac = 2.54; float x, in, cm;

char ch = 0;

cout << "введите длину:"; cin >> x >> ch;

if (ch == 'i') {// inch - дюймы in = x;

cm = x*fac;

}

else if (ch == 'c') // cm - сантиметры in = x/fac;

cm = x;

}

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

16

else

in = cm = 0;

cout << in << " in = " << cm << " cm\n";

}

Заметьте, что условие в операторе if должно быть заключено в круглые скобки.

Операторы switch

Оператор switch производит сопоставление значения с множеством констант. Проверки в предыдущем примере можно записать так:

switch (ch) { case 'i':

in = x;

cm = x*fac; break;

case 'c': in = x/fac; cm = x; break; default:

in = cm = 0; break;

}

Операторы break применяются для выхода из оператора switch. Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default. Программисту не обязательно предусматривать default.

Операции увеличения (++) и уменьшения (--) являются унарными операциями присваивания. Они соответственно увеличивают или уменьшают значения операнда на единицу. Операнд может быть целого или плавающего типа или типа указатель и должен быть модифицируемым. Операнд целого или плавающего типа увеличиваются (уменьшаются) на единицу. Тип результата соответствует типу операнда. Операнд адресного типа увеличивается или уменьшается на размер объекта, который он адресует. В языке допускается префиксная или постфиксная формы операций увеличения (уменьшения), поэтому значения выражения, использующего операции увеличения (уменьшения) зависит от того, какая из форм указанных операций используется.

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

17

Если знак операции стоит перед операндом (префиксная форма записи), то изменение операнда происходит до его использования в выражении и результатом операции является увеличенное или уменьшенное значение операнда.

В том случае если знак операции стоит после операнда (постфиксная форма записи), то операнд вначале используется для вычисления выражения, а затем происходит изменение операнда.

Примеры: int t=1, s=2, z, f; z=(t++)*5;

Вначале происходит умножение t*5, а затем увеличение t. В результате получится z=5, t=2.

f=(++s)/3;

Вначале значение s увеличивается, а затем используется в операции деления. В результате получим s=3, f=1.

В случае, если операции увеличения и уменьшения используются как самостоятельные операторы, префиксная и постфиксная формы записи становятся эквивалентными.

z++; /* эквивалентно */ ++z;

Простое присваивание

Операция простого присваивания используется для замены значения левого операнда, значением правого операнда. При присваивании производится преобразование типа правого операнда к типу левого операнда по правилам, упомянутым раньше. Левый операнд должен быть модифицируемым.

Пример: int t; char f; long z; t=f+z;

Значение переменной f преобразуется к типу long, вычисляется f+z, результат преобразуется к типу int и затем присваивается переменной t.

Составное присваивание

Кроме простого присваивания, имеется целая группа операций присваивания, которые объединяют простое присваивание с одной из бинарных операций. Такие операции называются составными операциями присваивания и имеют вид:

(операнд-1) (бинарная операция) = (операнд-2) .

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

18

Составное присваивание по результату эквивалентно следующему простому присваиванию:

(операнд-1) = (операнд-1) (бинарная операция) (операнд-2) . Отметим, что выражение составного присваивания с точки

зрения реализации не эквивалентно простому присваиванию, так как последним операнд-1 вычисляется дважды.

Каждая операция составного присваивания выполняет преобразования, которые осуществляются соответствующей бинарной операцией. Левым операндом операций (+=) (-=) может быть указатель, в то время как правый операнд должен быть целым числом.

Примеры:

double arr[4]={ 2.0, 3.3, 5.2, 7.5 }; double b=3.0;

b+=arr[2]; /*эквивалентно b=b+arr[2]*/ arr[3]/=b+1;/*эквивалентно arr[3]=arr[3]/(b+1)*/

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

Приоритеты операций и порядок вычислений

В языке СИ операции с высшими приоритетами вычисляются первыми. Наивысшим приоритетом является приоритет равный 1. Приоритеты и порядок операций приведены в табл. 4.1.

Таблица 4.1

 

 

 

 

 

 

 

 

 

Приоритет

Знак

 

Типы операции

 

Порядок

 

операции

 

 

выполнения

 

 

 

 

 

 

 

Слева направо

 

2

 

() [] . ->

 

Выражение

 

 

 

 

 

 

 

 

 

 

 

 

- ~ ! * & ++ --

 

 

 

 

 

1

 

sizeof

 

Унарные

 

Справа налево

 

 

приведение

 

 

 

 

 

типов

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

* / %

 

Мультипликативные

 

 

 

 

 

 

 

 

 

 

 

4

 

+ -

 

Аддитивные

 

 

 

 

 

 

 

 

 

 

 

5

 

<< >>

 

Сдвиг

 

Слева направо

 

 

 

 

 

 

 

 

6

 

< > <= >=

 

Отношение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

== !=

 

Отношение

 

 

 

 

 

(равенство)

 

 

 

 

 

 

 

 

 

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

19

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]