Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С и С++.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
212.63 Кб
Скачать

14.Арифметические операции. Логические операции.

15.Операции присвоения.

Операции присваивания: =, +=, -=, *= и т.д.  Операции присваивания могут использоваться в программе как законченные операторы.  Простое присваивание (=):

операнд_1 = операнд_2

Сначала вычисляется выражение, стоящее в правой части операции, а потом его результат записывается в область памяти, указанную в левой части  Правило: «присваивание — передача данных "налево".  То, что ранее хранилось в этой области памяти, естественно, теряется.  Пример.

#include

1nt main(){

int a = 3, b = 5, с = 7;

a = b; b = a; с = с + 1;

cout << "a = " << a;

cout << "\t b = " << b;

cout << "\t с = " << c;

return 0;

}

Результат:

a = 5 b = 5 c = 8

В сложных операциях присваивания ( +=, *=, /= и т п.) при вычислении выражения, стоящего в правой части, используется значение из левой части. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение

а += b эквивалентно а = а + b

16.Операции отношения. Адресные операции.

Операции отношения (<. <=, >. >=. =. !=) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом

операции является значение true или false (любое значение, не равное нулю, интерпретируется как true). Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.

Адресные операции

&Операция получения адреса операнда.

Операндом может быть любое l-выражение. Операция возвращает адрес объекта или функции, на который ссылается операнд. Операция невыполнима по отношению к объектам, определённым со спецификатором register, поскольку существует вероятность того, что они не располагаются в памяти и не имеют определённого адреса.

*Операция обращения по адресу или операция косвенного обращения.

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

17.Операции “?:”, sizeof, (тип)

Условная операция (?:). Эта операция тернарная, то есть имеет три операнда.

Ее формат:

операндах ? операнд_2 : операндов Первый операнд может иметь арифметический тип или быть указателем. Он оценивается с точки зрения его эквивалентности нулю (операнд, равный нулю, рассматривается как false, не равный пулю — как true). Если результат вычисления операнда 1 равен true, то результатом условной операции будет значение второго

операнда, иначе — третьего операнда. Вычисляется всегда либо второй операнд,

либо третий. Их тип может различаться. Условная операция является сокращенной формой условного оператора if (он рассмотрен на с. 40).

#1nc1ude <stclio.h>

1nt main(){

int a = 11. b = 4. max;

max = (b > a)? b : a:

printfC"Наибольшее число: М". max):

return 0:

}

Результат работы программы:

Наибольшее число: 11

Другой пример применения условной операции. Требуется, чтобы некоторая целая величина увеличивалась на 1, если ее значение не превышает п, а иначе при­

нимала значение 1:

1 = (1 < п) ? 1 + 1: 1:

Операция определения размера sizeof предназначена для вычисления размера

объекта или типа в байтах, и имеет две формы:

sizeof выражение

sizeof ( тип )

Пример:

#1nclude <iostream.h>

int ma1n(){

float X = 1;

cout « "sizeof (float) :" « sizeof (float):

cout « "\ns1zeof X :" « sizeof x;

cout « "\nsizeof (x + 1.0) :" « sizeof (x +1.0):

return 0:

}

Результат работы профаммы:

sizeof (float) : 4

sizeof X : 4

sizeof (X + 1.0) : 8

Последний результат связан с тем, что вещественные константы по умолчанию

имеют тип doubl е, к которому, как к более длинному, приводится тип переменной

X и всего выражения. Скобки необходимы для того чтобы выражение, стоящее в

них, вычислялось раньше операции приведения типа, имеющей больший при­

оритет, чем сложение.