Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры прога 2.docx
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
83.31 Кб
Скачать

13.2,Преобразование типов в выражения. Правила приведения типов.

переменной слева от знака присваивания. В этом случае может произойти преобразование от старшего типа к младшему.

Знаковые операнды.

Литера превращается в целое посредством размножения знаков(int, unsigned int, long, unsigned long).Преобразование целых типов в типы с плавающей точкой происходят по специальным библиотечным процедурам с заполнением свободных битов нулями. Это преобразование всегда корректно. Преобразование типа с плавающей точкой в целые типы выполняется по библиотечным процедурам и дает ближайшее целое(т.е. дробная часть отбрасывается, какой бы она не была ).

Int I; float f = 3.8;

I = f; [3]

Преобразование старших целых типов в младшие выполняется отбрасыванием старших битов.

Операции приведения типов.(type)

Все выше перечисленные операции приведения типов выполняются автоматически при смешивании в одном выражении операндов разных типов( неявное риведение типов). В Си позволяется задавать явное приведение типов, используя унарную операцию type.

выр.(любой тип Си)

Эта операция приводит выражение к типу справа

Sqrt((double)n);

Операция приведения типов не изменяет типа аргумента,а лишь вырабатывает выражение этого типа.

14.1, Управление вычислительными процессами. Конструкции if-else, else-if.

Инструкцией в языке Си наз любое выражение ,заканчивающееся ; Инструкции могут быть простыми и составными. Составная инструкция или блок- это любая совокупность простых инструкций, заключенных в {}

{[объявление]

инструкция

[инструкция]…

}

Инструкция ветвления

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

В Си эти инструкции организованы как :

If- else, switch

1.if-else

if(выр) инструкция1

[else инстр2]

Вначале вычисляется выражение . если оно истино(!=0), то выполняется инстр1, если выражение ложно, то выполняется инстр2. Если else нет, то выполняется следующая за if инструкция.

Допускаются вложенные инструкции if- else. При вложенных инструкциях else- часть связывается с ближайшим if , у к-рого нет своего else.

Конструкция else-if

if(выр)

инстр.

еlse if(выр)

инстр.

  • - - -

еlse if(выр)

инстр.

еlse инстр.

Эта конструкция представляет собой последовательность инструкций if-else и используется для многоступенчатого принятия решения. Выражения вычисляются попорядку, как только встречается выр = true выполняется его инструкция. На этом последовательность проверок прекращается. Последняя else

14.2, Управление вычислительными процессами. Конструкции if-else, else-if.

срабатывает, если все выражения ложны и используеся для фиксации ошибочной ситуации.

15.Переключатель

Инструкцией в языке Си наз любое выражение ,заканчивающееся ; Инструкции могут быть простыми и составными. Составная инструкция или блок- это любая совокупность простых инструкций, заключенных в {}

{[объявление]

инструкция

[инструкция]…

}

Инструкция ветвления

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

В Си эти инструкции организованы как :

If- else, switch

Переключатель switch

предназначена для выбора одного из различных вариантов

switch (выр){[объявления]

case конст_выр : [инструкции]

[case конст_выр : [инструкции]]

[default : [инструкции]]}

Выражение следующее за switch может быть любым целым выражением. Значение этого выражения явл критерием для выбора одного из нескольких вариантов. Тело оператора switch состоит из нескольких операторов, помеченых словом case. Обычно в качестве конст_выр используются целые или символьные константы.

В операторе switch может быть только одна ветвь, помеченная default. Она не обязательно должна стоять последней.

Схема выполнения оператора switch

1)вычисляется выр в скобках

2)вычисленное значение последовательно сравнивается с конст_выр

3)если сравнение найдено, то выполняются соответствующие инструкции

4)если сравнение не найдено и есть ветвь default, то выполняется ее инструкция

5)если сравнение не найдено и ветви default нет, то выполняется следующий за switch оператор.

Т.к. выбор ветви case реализован как переход на метку, то после выполнения одной ветви case будут выполняться другие инструкции ветвей case до конца операции. Немедленный выход из переключателя осуществляется с помощью инструкции break;

Char sign;

Int x,y,z;

Switch(sign){

Case’+’: z=x+y;break;

Case’-’: z=x-y;break;

Case’*’: z=x*y;break;

Case’/’: z=x/y;break;

Default: prinf(“ошибочный знак операции\n”)}

Для того чтобы выполнить одни и те же действия для различных значений выражения, можно пометить один и тот же оператор разными case.Допускается использование вложенных операторов switch. В этом случае в ветвях case внешнего и внутреннего операторов допускаются одинаковые конст_выр.