Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

programmirovanie / ОПиАЯ_№3_1_слайды

.doc
Скачиваний:
32
Добавлен:
03.03.2016
Размер:
70.14 Кб
Скачать

3.1.5 Операции

  • арифметические;

  • логические;

  • отношения;

  • присваивания;

  • побитовые операции;

  • операция вычисления размера(sizeof );

  • операция следования (запятая);

  • другие операции.

Арифметические операции

+ -сложение

- -вычитание

* -умножение

/ -деление

% -остаток

+, -, /, * для переменных типа int, float, char.

% не определена для переменных типа float.

Целочисленные + и выписываются без

учёта переполнения

Операции отношения

= = проверка на равенство

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

< меньше

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

> больше

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

Все операции вырабатывают результат типа int.

Если данное отношение истинно, то 1, если нет, то 0.

< > имеют равный приоритет. У < > приоритет больше, чем у (= =) и (!=). Приоритет операции присваивания ниже приоритета всех операций сложения.

Логические операции

&& операция и (and)

|| операция или (or)

! операция отрицания

У логических операций низкий приоритет. Аргументами логических операции могут быть любые числа. Простейшей формой логического выражения является единственное значение или переменная типа int, предназначенная для представления значения «истина» или «ложь». В следующем фрагменте когда такая переменная используется для представления утверждения, относится ли лицо данного возраста к категории пожилых жителей города, или нет

Int senior_citizen;

senior_citizen = age>=65;

Такая переменная senior_citizen может служить вполне законным условием при использовании в решении или проверке повторения цикла. Рассмотрим пример:

if(senior_citizen)

printf(“Send senior discount brochure.\n”);

Если мы определим значение идентификатора TRUE, равное 1, любое из этих выражений присваивания даст переменной senior_citizen значение1, означающее истинную

senior_citizen =1;

senior_citizen = TRUE

senior_citizen = 66>=65;

Таблица 3.1 Оператор &&

Операнд 1

Операнд 2

Операнд 1&& Операнд 2

Ненулевой

Ненулевой

1

Ненулевой

0

0

0

Ненулевой

0

0

0

0

Таблица 3.2 Оператор ||

Операнд 1

Операнд 2

Операнд 1|| Операнд 2

Ненулевой

Ненулевой

1

Ненулевой

0

1

0

Ненулевой

1

0

0

0

Таблица 3.3 Оператор !

Операнд 1

! операнд 2

Ненулевой

0

0

1

Операции присваивания

= += -= *= /= ++ --

Если типы левой и правой частей не совпадают,

то тип правой части приводится к типу левой.

а+=b a=a+b

a-=b a=a-b

a*=b a=a*b

a/=b a=a/b

++ инкремент (т.е. увеличение переменной на 1)

-- декремент (т.е. уменьшение переменной на 1)

++а увеличение на 1 до использования этой переменной в выражении

а++ увеличение на 1 после использования этой переменной в выражении

Аналогично с а-- и --а

Пример:

a=b=c=d=f=0;

a=(b=c)*d

Таблица

Операция

Приоритет

Вызов функции

высший

низший

! унарный+ унарный унарный& унарный*

Явное преобразование типа

* / %

Бинарный + бинарный -

< > <= >=

== !=

&&

||

=

Упражнения для экспресс-проверки.

  1. а) Оцените выражение

      1. 1 && (30 %>=0) && (30 %<=3)

б) Необходимы ли обе пары скобок?

в) Запишите логическое дополнение выражения двумя способами: в первом – добавьте один оператор и одну пару скобок. Во втором варианте примените теорему де Морган.

  1. Равно ли 21 значение следующего выражения при n=4 и m=5?

++(n*m)

Поясните свой ответ.

  1. Какие будут присвоены значения n, m, p при следующих начальных значениях?

j = 5

k = 2

n = j-++k;

m = j--+k--;

p = k+j;

  1. Какие значения будут присвоены x, y, z?

x = 3;

y = 5;

z = 2;

x*= y+z;

y/= 2*z+1;

z+=x;

  1. Что напечатает следующий фрагмент кода? Проверьте при следующем вводе: 345, 82, 6. Затем опишите действия кода.

printf(“\nEnter a positive integer> ”);

scanf(“%d”, &num);

do {

printf(“%d”, num % 10);

num/=10;

} while (num>0);

printf(“\n”);