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

инфа Тема_5_1

.pdf
Скачиваний:
2
Добавлен:
29.05.2015
Размер:
832.11 Кб
Скачать

Пустой тип (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