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

Вопрос 6 Типы операций: операции присвоения и отношения. Примеры. Операция присваивания.

    В отличие от многих языков программирования высокого уровня, в языке C++ операция присваивания сама является выражением. Как любое выражение, присваивание имеет значение - это тот результат, который присваивается переменной, задаваемой левым операндом.

    Синтаксис операции присваивания:

 Адресуемое_значение = Выражение

    Адресуемое_значение(l-value, l-значение) - ссылка на объект, например: имя переменной, ссылка на элемент массива и на элемент структуры. Например, legs=4 - выражение, значением которого является 4.

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

    Общее правило о специальной форме присваивания можно сформулировать так: для некоторых бинарных операций существует специальная операция присваивания, обозначаемая:

сложение с присваиванием (+=);

вычитание с присваиванием (-=);

умножение с присваиванием (*=);

деление с присваиванием (/=);

остаток от деления с присваиванием (%=);

сдвиг влево с присваиванием (<<=);

сдвиг вправо с присваиванием (>>=);

битовое "И" с присваиванием (&=);

битовое "ИЛИ" с присваиванием (|=);

битовое исключающее "ИЛИ" с присваиванием (^=).

    Если В1 и В2 - выражения, то результаты выполнения операций присваивания

 В1 операция= В2 и

 В1 = (В1) операция (В2)одинаковы.

    Например, следующие две записи на языке C++ эквивалентны: i = i + 2; и i += 2;.

   

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

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

    Значением выражений, содержащих операции отношения или логические операции, является 0 ("ложь") или 1 ("истина").

    Перечислим операции отношения:

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

больше (>);

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

меньше (<);

равно (==);

не равно (!=).

Вопрос7 Типы операций: логические, битовые и условные операции.

логические операции:

унарная операция

логическое отрицание (!);

бинарные операции

логическое "И" (&&);

логическое "ИЛИ" (||);

    Операция отрицания ! преобразует ненулевой ("истинный") операнд в 0, а нулевой ("ложный") операнд в 1. Например, можно использовать запись !inword вместо inword==0.

    Логическая операция "И" возвращает значение "истина", если оба ее операнда имеют значение "истина", иначе она вырабатывает значение "ложь".

    Выражения, связанные логическими операциями && и ||, вычисляются слева направо, причем вычисление значения выражения прекращается сразу же, как только становится ясно, будет ли результат истинен или ложен.

    Логические операции выполняются слева направо. Считается, что значение операнда в логической операции есть "ложь" если операнд равен 0, и "истина", если операнд имеет любое другое значение.

    Использование битовых операций обычно свойственно программистам, работающим на языке.В языке C++ существуют следующие операции, выполняющиеся над разрядами:

унарная операция:

инверсия битов (~);

бинарные операции:

битовое "И" (&);

битовое "ИЛИ" (|);

битовое исключающее "ИЛИ" (^);

сдвиг влево (<<);

сдвиг вправо (>>);

    1. Инверсия битов  (поразрядное отрицание, дополнение до единицы) инвертирует биты, т.е. каждый бит со значением 1 получает значение 0 и наоборот.

    2. Битовое "И" сравнивает последовательно разряд за разрядом два операнда

10010011 & 00111101 = 00010001,

    3. Битовое "ИЛИ" сравнивает последовательно разряд за разрядом два своих операндов. например,

10010011 | 00111101 = 10111111,

    4. Битовое исключающее "ИЛИ" сравнивает последовательно разряд за разрядом два своих операндов. например,

10010011 ^ 00111101 = 10101110 .

поскольку нулевой разряд в обоих операндах имеет значение 1, нулевой разряд результата имеет значение 0.

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

10001010 << 2  = 00101000 ,

(каждый разряд сдвинулся на две позиции влево).

Таким образом, х<<2 сдвигает х влево на 2 позиции, заполняя освобождающиеся позиции нулями (эквивалентно умножению на 4).

    6. Сдвиг вправо сдвигает разряды левого операнда вправо на число позиций, указанное правым операндом.

10001010  >> 2  = 00100010 ,

(каждый разряд сдвинулся на две позиции).

      3. В языке C++ существует оригинальная операция, обозначаемая:

Условие ? Выражение_1 : Выражение_2.

и называемая условной операцией.

    Эта операция содержит три операнда. Сначала вычисляется значение выражения Условие. Если значение отлично от нуля (истинно), то вычисляется значение выражения Выражение_1, которое и становится значением условной операции. В противном случае вычисляется значение выражения Выражение_2 становится значением условного выражения.

    Каждый раз вычисляется одно из выражений Выражение_1 или Выражение_2.

    например

Выражение (5>3) ? 1 : 2 возвращает значение 1.

Выражение (3>5) ? 1 : 2 возвращает значение 2.

Выражение (a>b) ? a : b возвращает большую из величин a и b.

    Условную операцию удобно использовать в тех случаях, когда имеется некоторая переменная, которой можно присвоить одно из двух возможных значений. Например: x = (y<0) ? -y : y;. Значением переменной x становится абсолютная величина значения y.

8) Типы переменных. Преобразование типов. Особенности некоторых операций (например, операции запятая).Переменной называется именованная область памяти компьютера (имя которой задаёт разработчик) в которую можно записывать (в том числе повторно, замещая ранее хранимое значение) значения определенного типа и откуда эти значения можно читать.При создании любой переменной требуется указать её тип и задать имя.Например:

int per1; // создали переменную типа int с именем per1

per1 = 25; // сохранили в переменную целое число 25

int b; // создали переменную типа int с именем b

b = 3 + per1; // прочитали значение 25, сложили его с 3 и сумму записали в b

cout << b; // прочитали из переменной b значение 28 и вывели его на экран

Типы данныхВ C++ существуют встроенные типы данных для хранения логических значений, целых и вещественных чисел, кодов символов.

Название типа Описание

char Для хранения кодов символов или маленьких целых чиселshort int (или просто short) Короткие целые числа

int Целые числа

long int (или просто long) Длинные целые числа

bool Логические значения

float Вещественные числа одинарной точности

double Вещественные числа двойной точности

long double Длинные вещественные числа

Любые операнды типа char, unsigned char или short преобразуются к типу int по правилам:

• char расширяется нулем или знаком в зависимости от умолчания для char;

• unsigned char расширяется нулем;

• signed char расширяется знаком;

• short, unsigned short и enum при преобразовании не изменяются.

• Затем любые два операнда становятся либо int, либо float, double или long double.

Преобразование других типов данных осуществляется следующим образом:

1. Если один из операндов имеет тип long double, то другой преобразуется к типу long double.

2. Если один из операндов имеет тип double, то другой преобразуется к типу double.

3. Если один из операндов имеет тип float, то другой преобразуется к типу float.

4. Иначе, если один из операндов имеет тип unsigned long, то другой преобразуется к типу unsigned long.

5. Иначе, если один из операндов имеет тип long, то другой преобразуется к типу long.

6. Иначе, если один из операндов имеет тип unsigned, то другой преобразуется к типу unsigned.

7. Иначе оба операнда должны иметь тип int.

Тип результата тот же, что и тип участвующих в выражении операндов.

Операция «запятая». Эта необычная операция используется для связывания нескольких выражений в одно. Несколько выражений, разделенных запятыми, вычисляются последовательно слева направо. В качестве результата такого совмещенного выражения принимается значение самого правого выражения. Например, если переменная X имеет тип int, то значение выражения (X=3, 5*Х) будет равно 15, а переменная X примет значение 3.Операция «условие ?:». Это единственная операция, которая имеет три операнда. Формат операции выражение1 ? выражение 2 : выражение 3.Данная операция реализует алгоритмическую структуру ветвления. Алгоритм ее выполнения следующий: первым вычисляется значение выражения 1, которое обычно представляет собой некоторое условие. Если оно истинно, т. е. не равно 0, то вычисляется выражение 2 и полученный результат становится результатом операции. В противном случае в качестве результата берется значение выражения 3.

9) Приоритеты выполнений операций. Для большинства операций порядок их выполнения определяется приоритетами, однако существует несколько исключений из этого правила:

• префиксные операции увеличения и уменьшения, например ++x и --x, всегда выполняются прежде, чем их операнд будет использован в выражении;

• постфиксные операции увеличения и уменьшения, например x++ и x--, всегда выполняются после того, как их операнд будет использован в выражении;

• логические операции И и ИЛИ всегда выполняются слева направо. Логическое выражение вычисляется слева направо до тех пор, пока не станет известно его значение.

Таблица 1. Приоритеты выполнения операций

Ранг

Операции

1

( )   [ ]    ->    ::    .

2

!    ~    +    -    ++     --    &    *    (тип)    sizeof    new    delete    тип( )

3

.*    ->*

4

*    /    %    (мультипликативные бинарные операции)

5

-    +    (аддитивные бинарные операции)

6

<<       >>

7

<    <=     >=     >

8

==     !=

9

&

10

^

11

|

12

&&

13

||

14

?: (условная операция)

15

=     *=    /=    %=    +=    -=    &=     ^=     !=    <<=     >>=

16

, (операция "запятая")

    я перечислила операции, поддерживаемые языком программирования С++.

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