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

6. Типы данных: целый, вещественный, символьный. Размеры данных.

Основные типы базовых данных: целый – int, вещественный с одинарной точностью – float и символьный – char. В свою очередь, данные целого типа могут быть короткими – short, а также длинными – long . Кроме того, при любой длине данные целых и символьного типов могут быть знаковыми - signed либо беззнаковыми – unsigned (по умолчанию они считаются знаковыми, поэтому слово signed необязательно и обычно опускается). Вещественные же данные могут иметь удвоенную точность – double.

Тип данных

Размер (байт)

Диапазон значений

Точность, десятичных знаков

сhar

1

-128 … 127

unsigned сhar

1

0 … 255

short int

2

-215… 215–1 (-32768…32767)

int

4

-231…231–1 (-2147483648…2147483647)

long int

4

-231…231–1 (-2147483648…2147483647)

long long int

8

–263... 263–1 (примерно )

unsigned short int

2

0…216–1 (0…65535)

unsigned int

4

0…232–1 (0…4294967295)

7.Правила определения переменных в программе. Инициализация переменных.

Данные, значения которых во время выполнения программы можно изменять, называются переменными, неизменяемые данные называются константами. В программе все данные перед их использованием должны быть объявлены или определены. В операторах определения данных указывается тип данных и перечисляется через запятую имена переменных, имеющих данный тип. Отличие объявления от определения заключается в том, что при объявлении переменной ей место в памяти соответствующей функции не выделяется, объявление лишь сообщает компилятору тип переменной. Место же для значения переменной запрашивается в другой функции. К объявлениям относятся, например, перечисление имен переменных в списке параметров функции.

Определение переменных имеет следующий формат:

[спецификатор класса памяти] спецификатор типа идентификатор [=начальное значение];

Идентификатор может быть записан с квадратными скобками, круглыми скобками или перед ним может быть один или несколько знаков *. Спецификатор типа – это одно или несколько ключевых слов, определяющих тип переменной. Язык Си определяет стандартный набор основных типов данных (int, char, double). При определении переменных им можно присвоить начальное значение. Четыре ключевых слова: auto, extern, register, static определяют класс памяти. Если ключевое слово, определяющее класс памяти, опущено, то класс памяти определяется по контексту.

Определение и объявление переменных рекомендуется размещать в начале программного модуля.

8.Унарные операции.

Операции, применяемые к одному операнду, - унарные.

Унарные операции + и – обладают самым высоким приоритетом, определены только для целых и вещественных операндов, «+» носит только информационный характер, «–» меняет знак значения операнда на противоположный (не адресная операция).

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

Арифметические операции- бинарные. Перечень арифметических операций и их обозначений:

+ - сложение;

- - вычитание (либо унарная операция - изменение знака);

/ - деление (для intоперандов - с отбрасыванием остатка);

* - умножение;

% - остаток от деления целочисленных операндов, со знаком первого операнда (деление по модулю).

Операндами традиционных арифметических операций (+ - * /) могут быть константы, переменные, элементы массивов, любые арифметические выражения.

Порядок выполнения операций:

  • выражения в круглых скобках;

  • функции (стандартные математические, функции пользователя);

  • * / выполняются слева направо;

  • + ─ слева направо.

Порядок выполнения операций можно определять круглыми скобками, тогда выражение в скобках выполняется в первую очередь (слева направо).

Унарные операции + и – обладают самым высоким приоритетом, определены только для целых и вещественных операндов, «+» носит только информационный характер, «–» меняет знак значения операнда на противоположный (не адресная операция).

Таким образом, так как операции *, /, % обладают высшим приоритетом над операциями +, -, при записи сложных выражений нужно использовать общеприня­тые математические правила:

x+y*z-a/b  x+(y*z)-(a/b).

Поразрядные операции:

К поразрядным операциям относятся: операция поразрядного логического "И" (&), операция поразрядного логического "ИЛИ" (|), операция поразрядного "исключающего ИЛИ" (^). Операнды поразрядных операций могут быть любого целого типа. При необходимости над операндами выполняются преобразования по умолчанию, тип результата - это тип операндов после преобразования.Операция поразрядного логического И (&) сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если оба сравниваемых бита единицы, то соответствующий бит результата устанавливается в 1, в противном случае в 0. Операция поразрядного логического ИЛИ (|) сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если любой (или оба) из сравниваемых битов равен 1, то соответствующий бит результата устанавливается в 1, в противном случае результирующий бит равен 0.Операция поразрядного исключающего ИЛИ (^) сравнивает каждый бит первого операнда с соответствующими битами второго операнда. Если один из сравниваемых битов равен 0, а второй бит равен 1, то соответствующий бит результата устанавливается в 1, в противном случае, т.е. когда оба бита равны 1 или 0, бит результата устанавливается в 0.

Пример.

int i=0x45FF, /* i= 0100 0101 1111 1111 */ j=0x00FF; j= 0000 0000 1111 1111 */ char r; r = i^j; /* r=0x4500 = 0100 0101 0000 0000 */ r = i|j; /* r=0x45FF = 0100 0101 0000 0000 */ r = i&j /* r=0x00FF = 0000 0000 1111 1111 */

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]