инфа Тема_5_1
.pdfПустой тип (void)
(представляет пустое множество значений)
Используется в следующих случаях:
для указания типа функции, не возвращающей значений
для указания того, что значение выражения не будет использовано
Перечисляемый тип (enum)
(позволяют в качестве значения использовать имена объектов (идентификаторы))
Описание перечисляемого типа имеет вид:
typedef enum {a0, a1, …, an} E;
где E - описываемый перечисляемый тип
Пример
1) Определяем новый тип day:
typedef enum {mon, tru, wed, thu, fri, sat, sun} day;
2) Определяем переменную данным типом:
day f;
3) Использование данной переменной:
switch(f)
{
case mon: оператор 1; case tru: оператор 2;
}
11
Общий вид оператора:
1 вариант: (класс_памяти) тип_данных имя_объекта;
где класс памяти может быть опущен
2 вариант: |
(класс_памяти) тип_данных имя_объекта=значение; |
(с инициализацией)
Примеры:
int a, b, c; |
double e; |
|
float |
x=2.8, y=1; |
unsigned u; |
char |
ch, t=’C’; |
и т.д. |
12
Операция присваивания ``=``
Общий вид оператора:
1)Базовая форма: <имя>=<выражение>
2)Разновидность операции присваивания:
<имя>=<имя> <знак операции> <выражение>
обеспечивает формирование и <знак операции> – последующее вычисление
выражения
<выражение> – правило для получения значения
Примеры: |
x = 362; |
|
|
|
k = k + 2; |
|
m = c = 1; |
Компактные формы операции присваивания:
а= a + b то же, что a + = b
а= a * b то же, что a * = b
а= a*(3*b +10) то же, что а*=3*b+10 i = i + 1 тоже, что и i++
13
Бинарные операции:
+сложение
-вычитание
*умножение
/деление
% деление по модулю
Приоритет операций
Унарные операции:
1)- унарный минус
2)операции единичного приращения:
(только для целых переменных и констант)
++ положительного
(увеличение на единицу – инкремент)
-- отрицательного
(уменьшение на единицу – декремент)
Различают
++, --
- (унарный минус)
*, /, % +, –
апостериорное приращение
например:
c=a+b++
при пошаговом выполнении будет означать:
c1=a+b, c2=a+(b+1), c3=a+(b+2), …, и т.д.
априорное приращение
например:
c=a+++b
при пошаговом выполнении будет означать:
c1=a+(b+1), c2=a+(b+2), …, и т.д.
14
Бинарные: |
Унарная: |
Сдвиг влево |
a=b<<c (b<<1 101110110) “НЕ” a=~b |
Сдвиг вправо |
a=b>>c (b>>1 1011101) |
Операция “И” a = b & c
(1011 0100)
Операция “ИЛИ” a = b | c
Операция исключающее “ИЛИ” a = b ^ c
b |
c |
b&c |
b|c |
b^c |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
15
Операции отношения
a<b a>b a>=b a<=b a= =b a != b
где
== знак «равно»
!= знак «не равно»
< меньше
> больше
>= больше или равно
<= меньше или равно
Логические операции
a&&b - операция логическое ―И‖
a | | b - операция логическое ―ИЛИ‖
! a - операция логическое ―НЕ‖
Операция условия ?:
Синтаксическая форма:
выражение_1 ? выражение_2 : выражение_3;
Правило выполнения:
если выражение_1 истинно (т.е. ! = 0), то результатом
операции является значение выражения_2,
в противном случае – значение выражения_3.
Пример:
нахождения максимального из двух чисел:
max = (a>b) ? а : b; |
16 |
|
1) Безусловные:
Оператор безусловного перехода goto
Синтаксис:
goto <метка>; <метка>: <оператор>;
Действие: оператор goto передает управление
непосредственно оператору, помеченному
меткой
s = 0;
m : if (i < n)
Пример: {
s = s + 1; i++; goto m;
}
else printf (―%d‖, s);
17
2) Условные:
Оператор ветвления if
Синтаксис:
а) полная форма
if (выражение)
оператор_1; else
оператор_2;
Правило выполнения:
если выражение в скобках ―истина‖, то
выполняется оператор_1, в противном
случае выполняется оператор_2
б) сокращенная форма: if (выражение)
оператор_1;
Правило выполнения:
если выражение в скобках «истина», то
выполняется оператор_1, в противном
случае |
управление |
передается |
следующему оператору программы
18
Составные операторы в теле if должны заключаться в фигурные скобки:
{
оператор_1;
оператор_2;
…………
оператор_n;
}
Конструкция if – else – if:
if (условие) оператор_1;
else if (условие) оператор_2;
else if (условие) оператор_3;
else оператор_4;
Примеры:
Пример 1
if ( (ch = getch( ) )= =’g’)
puts (“Конец работы \n”); else
puts (“Работа продолжается \n”);
Пример 2
if (с=сh, ch=getch( )== ’g’)
Пример 3 if (x >1)
if (y= =2) z =5; else
z = 6;
19
Оператор-переключатель switch
Синтаксис:
switch (выражение)
{
case константа_1: оператор(ы) ;
case константа_2: оператор(ы);
…
default : операторы (ы);
}
switch (выражение)
{
case константа_1: оператор(ы) ; break; case константа_2: оператор(ы); break;
…
default : операторы (ы);
}
Примечание:
Область действия меток case – тело оператора switch.
Константы не могут иметь одинакового значения.
Константы могут иметь только типы int, char, enum.
Объект сравнения с меткой может быть константой, переменной,
указателем функции, выражением упомянутых типов.
switch (выражение)
{
case 1: case 2: оператор(ы) ;
}
20