- •Часть 1
- •Лекция 1
- •Лекция 3
- •Алфавит
- •Идентификаторы
- •Константы
- •Бинарные операции
- •Знаки операций и разделители
- •4. Знаки операций.
- •Унарные операции.
- •5. Разделители.
- •Выражения.
- •4.1 Условный оператор
- •4.2. Переключатели
- •5.Оператор цикла с предусловием.
- •6.Оператор цикла с постусловием.
- •7.Оператор итерационного цикла
- •8.1.Оператор goto
- •8.2.Оператор return
- •8.3.Оператор break
- •8.4.Оператор continue
- •Функция strcpy()
- •2. Функция strcat().
- •3. Функция strcmp()
- •12. Функция strlen().
- •Лекция 11
- •Лекция 12
- •Лекция 14
Знаки операций и разделители
4. Знаки операций.
Знаки операций используются для записи выражений. (Выражение – это есть операнд или совокупность операндов, объединенных знаками операций).
В языке С++ определено примерно 50 знаков операций:
+ - * / ~ ! ++ -- % << >> < > >= <= = = != & | ^ && || += и т.д.
Один и тот же знак может обозначать разные операции в зависимости от контекста. Например: бинарная операция & -это конъюнкция ( a&b), а унарная операция & - это операция вычисления адреса ( &x ) , cout << - вывод, a << b - сдвиг влево.
Унарные операции.
- унарный минус: -100 -а
+ унарный плюс: +в
~ побитовое отрицание : ~0 = 1 ~1 = 0 ~5 = 2
! логическое отрицание ( если целочисленный операнд равен 0, то результат равен 1,
если не равен 0, то результат 0).
!0 = 1 !2 = 0 !(-10) = 0
++ увеличение на 1 (инкремент). Операндом может быть только переменная.
++i 1) i=i+1 2) использовать i
i++ 1) использовать i 2) i=i+1
-- уменьшение на 1 (декремент)
--i 1) i=i-1 2) использовать i
i-- 1) использовать i 2) i=i-1
sizeof выражение вычисление размера объекта в байтах
sizeof(тип)
Например:
sizeof(char) = 1 int i; sizeof i = 2;
Бинарные операции
1.аддитивные операции
+ сложение арифметических операндов
- вычитание
2. мультипликативные операции
* - умножение
/ - деление. При целочисленных операндах абсолютное значение
результата округляется до целого.
20/3=6 -20/3=-6
% - получение остатка от целочисленного деления
13%4=1 (-13%4)= -1
13%(-4) = +1
(-13)%(-4)= -1
3. Операции сдвига ( только для целочисленных операндов)
Формат выражения с операцией сдвига
<операнд><операция сдвига><операнд>
<< сдвиг влево целочисленного операнда на количество разрядов, равное
значению правого целочисленного операнда.
>> сдвиг вправо
4 << 2 = 16 5 >> 1 = 2
4. Поразрядные операции
& - конъюнкция значений целочисленных операндов
| - дизъюнкция
^ - исключающая ИЛИ
6 | 5 = 7 110 6 ^ 5 = 3 110
| 101 ^ 101
111 011
5. Операции отношения (сравнения)
<, >, <=, >=, = = (равно), != (не равно)
6. Логические бинарные операции.
&& - конъюнкция арифметических операндов или отношений.
Результат 0 (ложь) или 1 (истина)
|| - дизъюнкция арифметических операндов или отношений.
3 < 5 = 1 3 > 5 = 0 3 = = 5 = 0
(3 + 4 > 5 && 3+5 > 4 && 4 + 5 > 3) = 1
7. Операции присваивания.
= присвоить значение выражения из правой части операнду левой части.
p= 5 – 2* х;
*= присвоить операнду левой части произведение значений обоих операндов
p*=2 ~ р = р*2
/= присвоить операнду левой части частное от деления левого операнда
на значение правого.
p/= 2.2 – α ~ p = p/(2.2 – α)
%= присвоить операнду левой части остаток от целочисленного деления
Левого операнда на правый.
N%=3 ~ N = N % 3
+ = присвоить операнду левой части сумму значений обоих операндов
А += В ~ А = А + В
- = присвоить операнду левой части разность значений обоих операндов
Х - = 4.3 – Z ~ X = X – (4.3 – Z)
<<= a <<=4 ~ a = a << 4
>>= a >>=4 ~ a = a >> 4
&= присвоить целочисленному операнду левой части значение, полученное
поразрядной конъюнкцией его битового представления с битовым
представлением целочисленного операнда правой части.
e&= 44 ~ e = e & 44
! = - дизъюнкция
^ = - исключающая ИЛИ
8. Круглые () скобки играют роль бинарных операций при вызове функций.
<имя функции> (< список параметров >)
Квадратные скобки [ ] играют роль бинарных операций при индексировании
элементов массива.
<имя массива>[<индекс>] - это переменная с индексом
В языке С++ принято, что индексы начинаются с нуля, т.е. массив int Z[3]
состоит из элементов z[0], z[1], z[2].
Пример:
Вывести на экран символьный массив ABCDEF в столбик.
#include <iostream.h>
void main()
{ char MASSIV[]=”ABCDEF”;
int i = 0; // i – номер элемента массива
while ( MASSIV[i] != ‘\0’)
cout << ‘\n’ << MASSIV[i++];
}
Результат:
A
B
C
D
E
F
9. Условная операция:
<выражение1> ? <выражение2> : <выражение3>
Алгоритм: вычисляется значение выражения1 . Если оно истинно, т.е. ≠ 0, то результатом является значение выражения2, в противном случае выражения3.
Например:
X<0 ? –X : X
10. Каноническая операция явного преобразования типа ( как в С) :
(<имя типа>) <операнд>
позволяет преобразовать значение операнда к нужному типу. В качестве операнда можно использовать идентификатор, константу или выражение, заключенное в круглые скобки.
Например:
(long) 10 - внутренне представление имеет длину 4 байта.
(char) 10 - внутренне представление имеет длину 1 байт.
(float) 10 – внутреннее представление имеет длину 4 байта (формат
вещественного числа)
Еще пример:
#include<iostream.h>
void main()
{ int INTEGER = 50;
float FLOATING = 15.85;
INTEGER = (int) FLOATING; // явное преобразование
cout << “New integer : “;
cout << INTEGER << “\n”;
}
Результат:
New integer: 15
Результат будет таким же в данном примере, если использовать неявное преобразование:
INTEGER=FLOATING; // неявное преобразование
Кроме рассмотренной канонической операции явного преобразования типов в языке С++ существует функциональная форма преобразования типов:
<имя типа>(<операнд>)
В этом случае тип имеет простое, несоставное наименование.
Например:
long (2) - длина 4 байта
double (2) - длина 8 байтов
unsigned long(2) - ошибка !
Грамматика языка С++ определяет 16 рангов операций. Операции ранга 1 имеют наивысший приоритет. Если в выражении используются несколько операций одного ранга, то они выполняются либо слева–направо (->), либо справа-налево (<-).
Ранг |
Операции |
Ассоциативность |
1. |
( ) [ ] (вызов функции, индекс массива) |
→ |
2. |
! ~ + - ++ -- sizeof тип() (унарные) |
← |
3. |
Операции с классами |
|
4. |
* / % ( бинарные) |
→ |
5. |
+ - (бинарные) |
→ |
6. |
<< >> |
→ |
7. |
< <= >= > ( отношения ) |
→ |
8. |
= = != ( отношения ) |
→ |
9. |
& ( побитовая конъюнкция ) |
→ |
10. |
^ ( побитовое исключающее ИЛИ ) |
→ |
11. |
| ( побитовая дизъюнкция ) |
→ |
12. |
&& ( логическая конъюнкция ) |
→ |
13. |
| | ( логическая дизъюнкция ) |
→ |
14. |
? : ( условная операция ) |
← |
15. |
= *= /= %= += -= &= ^= |= <<= >>= |
← |
16. |
, ( операция “запятая” ) |
→ |
Язык С++ предоставляет программисту возможность самостоятельно задавать порядок выполнения вычислений с помощью скобок. Не существует ограничения на вложенность скобок.
