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

43. Система типов языка Си.

Тип(sort)- относительно устойчивая независимая совокупность элементов, которую можно выделить во всем рассматриваемом множестве. Задается либо набором допустимых значений, либо набором действий, которые можно совершить над каждой переменной типа.

Типы языка Си:

-Пустой(void)

-Скалярные типы: указатели, арифм. типы(целые и вещественные),перечисления.

-Функции

-Комбинированные типы: массивы, структуры, объединения.

Целые:

Char (8бит, -128 – 127);

Signed char(8бит, -128 – 127);

Unsigned char(8бит, 0 – 255);

Int(16 бит, -32768 – 32767);

Signed int(16, 0 – 65535);

Long(32, -2147483648 – 2147483647);

Signed short int(-32768 – 32767)

Short int(16, -32768 – 32767)

Данные плавающего типа

Для переменных, представляющих число с плавающей точкой используются следующие модификаторы типа : float, double, long double (в некоторых реализациях языка long double СИ отсутствует).

Величина с модификатором типа float занимает 4 байта. Из них 1 байт отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон значений переменной с плавающей точкой приблизительно равен от 3.14E-38 до 3.14E+38.

Величина типа double занимает 8 бит в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон значений равен от 1.7E-308 до 1.7E+308.

Примеры:

float f, a, b;

double x,y;

44. Арифметические операции языка Си. Операции инкремента и декремента.

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

- вычитание или унарный минус;

+ сложение;

* умножение;

/ деление;

% деление по модулю;

++ увеличение на единицу; Инкремент. Префиксная: а++.

-- уменьшение на единицу; Декремент. Постфиксная: --а.

Операции сложения, вычитания, умножения и деления действуют так же, как в большинстве алгоритмических языков программирования. операции выполняются так: сначала вычисляется значение левого выражения (операнда), затем вычисляется значение выражения, стоящего справа от знака действия. Далее, в том случае, когда операнды имеют общий тип данных, этот же тип имеет и результат. Поэтому, если применяется деление "/" к целым числам, например, 11/3, то результат тоже будет целым, то есть в данном случае 3. А выражение 1/2 в этом случае будет равно нулю.  Операция "%" деление по модулю дает остаток от целочисленного деления. Она может применяться к целочисленным переменным.

45. Операции отношения и логические операции языка Си.

Язык С имеет ровно шесть операции отношения.

"<" - меньше.

"<=" - меньше или равно.

">" - больше.

">=" - больше или равно.

"= =" - равно.

"!=" - не равно.

Операции отношения используются в условных выражениях. Например, простейшие условия, которые не содержат логических операций, это следующие: "a<0", "1998>2003", "b= =B", "C!=D" и так далее.    Следует отметить, что относительно каждого условия решается вопрос: истинно оно или нет. В языке С отсутствует логический (boolean) тип. Поэтому при анализе истинности выражения, содержащего операции отношения, принято находить целочисленное арифметическое значение выражения. При этом считается, что истинность, то есть "true" соответствует ненулевому значению выражения. Обычно для "true" принято значение 1. Тогда 0 принимается за "false", то есть ложь. 

Логические операции

Язык С имеет ровно три логические операции: это

&& или (AND);

|| или (OR);

! или (NOT).

Операция "&&" называется логическим умножением потому, что выполняется таблица истинности этой операции, очень напоминающая таблицу обыкновенного умножения из арифметики.      Логическое умножение это такая операция, которая истинна тогда и только тогда, когда истинны оба входящих в нее высказывания.     1&&1=1    0&&1=0    1&&0=0    0&&0 = 0

Операция "||" называется логическим сложением потому, что выполняется таблица истинности этой операции, очень напоминающая таблицу обыкновенного сложения из арифметики.      Логическое сложение это такая операция, которая истинна тогда и только тогда, когда истинно хотя бы одно из входящих в нее высказываний.     1||1=1    0||1=1    1||0=1    0||0 = 0

Операция "!" называется логическим отрицанием потому, что выполняется следующая таблица истинности.      Логическое отрицание это такая операция, которая истинна тогда и только тогда, когда ложно входящее в нее высказывание и наоборот.     !1=0    !0=1

Кроме трех расмотренных выше классических логических операций в языке С используется еще четвертая логическая операция: "исключающее или".      Если обычно принято  операцию логическое умножение обозначать как "X AND Y", операцию логическое сложение как "X OR Y", а логическое отрицание как "NOT X", то операцию "исключающее или" обозначают как "X XOR Y".     В языке С нет знака логической операции XOR. Однако, она может быть реализована с помощью операций AND, OR и NOT. Покажем теперь таблицу истинности этой новой логической операции в языке С.       1XOR1=0       0XOR1=1       1XOR0=1       0XOR0=0     Отсюда видно, что, если оба входящих в выражение высказывания истинны или оба ложны, то результат будет в этом случае ложным. То есть, как бы отрицается утверждение: оба высказывания имеют одинаковый смысл истинности.  Напротив, если оба высказыва ния имеют разный смысл истинности, то в результате операции "исключающее или" это отрицается. Поэтому и выходит, что результат будет равен истине. 

Приоритет выполнения логических операций.      Логические операции и операции отношения имеют более низкий приоритет, чем арифметические операции. Это значит, что выражение 200>120+50 равносильно выражению 200>(120+50).      Принято следующее старшинство операций отношения и логических операций:        ! - самая старшая из логических операций  Далее старшинство операций распределяется так:        >    <      >=    <= Затем уже идут операции:       ==    != и самая младшая операция - это ||.     Использование скобок делает выражение более понятным и удобным для чтения. Условные и логические выражения часто используются в операторе условного перехода if и в других операторах.     Если при вычислении операции X && Y первое выражение X окажется нулевым (то есть ложным), то значение второго выражения Y никак не повлияет на результат. Поэтому можно игнорировать второе выражение. Аналогично обстоит дело и с оператором ||. Так, если значение первого операнда ненулевое, то значение второго операнда так же не влияет на результат. Потому он так же не вычисляется и игнорируется. Поэтому нужно учитывать этот факт и не изменять во втором операторе какую-либо переменную, пользуясь операцией ++.