Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Лекция 4
Тип задаётся набором допустимых значений и действий, которые можно производить над данными этого типа. Типы данных языка C схематически представлены на рисунке 1.
Рис. 1
Базовые типы данных языка C.
Тип char – символьный тип, хранит код символа. Любой символ в компьютере, который можно ввести с клавиатуры, вывести на монитор, имеет соответствующий ему код. Эти коды представлены в таблицах кодировок ASCII, ГОСТ и других, в зависимости от используемой компьютером кодировки. Преобразование символа в код и наоборот производится компьютером автоматически.
Тип int – целочисленный тип, хранит значение целого числа.
Тип float – вещественный тип, хранит значение числа с плавающей точкой.
Тип double – вещественный тип двойной длины, хранит значение числа с плавающей точкой.
Типы char, int, float, double является знаковыми, то есть переменная данного типа может принимать положительные и отрицательные значения.
Тип void – пустой тип, не имеющий значения.
Для модификации диапазонов принимаемых данными типами значений возможно использование модификаторов типа, которые ставятся перед соответствующим типом.
Модификатор signed – знаковый тип, хранит значения как положительные, так и отрицательные.
Модификатор unsigned – беззнаковый тип, хранит только неотрицательные значения.
Модификатор short – короткий тип, хранит укороченные значения.
Модификатор long – длинный тип, хранит удлинённые значения.
Модификаторы signed и unsigned могут применяться к типам char и int. Модификаторы short и long могут применяться к типу int. Модификатор long может также применяться к типу double. Модификаторы signed и unsigned могут комбинироваться с модификаторами short и long в применении к типу int.
В следующей таблице приведены все возможные типы с различными комбинациями модификаторов для стандарта ANSI языка C, их размеры в байтах и интервалы изменения.
Тип |
Размер в байтах (битах) |
Интервал изменения |
|
char |
1(8) |
от -128 |
до 127 |
unsigned char |
1(8) |
от 0 |
до 255 |
signed char |
1(8) |
от -128 |
до 127 |
int |
2(16) |
от -32768 |
до 32767 |
unsigned int |
2(16) |
от 0 |
до 65535 |
signed int |
2(16) |
от -32768 |
до 32767 |
short int |
2(16) |
от -32768 |
до 32767 |
unsigned short int |
2(16) |
от 0 |
до 65535 |
signed short int |
2(16) |
от -32768 |
до 32767 |
long int |
4(32) |
от -2147483648 |
до 2147483647 |
signed long int |
4(32) |
от -2147483648 |
до 2147483647 |
unsigned long int |
4(32) |
от 0 |
до 4294967295 |
float |
4(32) |
от -3.4E+38 |
до -3.4E-38 |
от 3.4E-38 |
до 3.4E+38 |
||
double |
8(64) |
от -1.7E+308 |
до -1.7E-308 |
от 1.7E-308 |
до 1.7E+308 |
||
long double |
10(80) |
от -3.4E+4932 |
до -3.4E-4932 |
от 3.4E-4932 |
до 3.4E+4932 |
В среде Borland C++ 3.1 можно в объявлениях переменных опускать слово int (например, short вместо short int, unsigned short вместо unsigned short int).
Все числа в памяти ЭВМ хранятся в двоичной системе счисления, но для программиста они доступны в десятичной системе счисления.
Различие между целыми числами со знаком и целыми числами без знака состоит в том, как интерпретируется старший бит целого числа в машинном представлении. Старший бит для целого знакового числа определяет знак числа. Если старший бит равен нулю, то число положительное, если единице, то число отрицательное. Отрицательные числа хранятся в обратном коде. Старший бит для целого беззнакового числа является обычным численным разрядом.
В языке C константа представляет собой фиксированную величину, которая не может быть изменена в программе. В языке C определены 4 типа констант:
Целые константы – натуральные числа. В языке C используются числа в восьмеричной, десятичной и шестнадцатеричной системах счисления. Чтобы отличать восьмеричные и шестнадцатеричные константы от десятичных, перед восьмеричными константами ставится ноль, а перед шестнадцатеричными – пара символов ‘0x’.
Пример 1
Тип данных |
Восьмеричная константа |
Десятичная константа |
Шестнадцатеричная константа |
int |
1 |
1 |
1 |
int |
173 |
123 |
7B |
short int |
-473 |
-315 |
-13B (FEC5) |
unsigned int |
146114 |
52300 |
CC4C |
long int |
222370 |
75000 |
124F8 |
Любая целая константа всегда считается неотрицательной, таким образом, минус перед константой воспринимается как унарная операция смены знака.
Вещественные константы – вещественные числа в десятичной системе счисления.
Пример 2
Тип данных |
Константа |
float |
14.9 |
float |
-0.516 |
float |
-2.5e-7 |
double |
14.9 |
double |
-4.96e-19 |
double |
123456789 |
Символьные константы – целые числа, значения которых соответствует ASCII-коду символа. Символьные константы заключаются в одинарные кавычки. В качестве символьной константы может выступать escape-последовательность, также взятая в одинарные кавычки.
Пример 3
Тип данных |
Константа |
ASCII-код |
char |
‘a’ |
97 |
char |
‘\n’ |
10 |
char |
‘9’ |
57 |
Строковые константы – это группа (массив) символов в количестве от 0 до произвольного числа n, заключённая в двойные кавычки и заканчивающаяся нулевым байтом. В строковую константу могут входить escape-последовательности.
Пример 4.
“Это - \n строковая константа”
Строковая константа в программе может быть записана в двух или более строках, но при выводе на консоль в рабочем режиме программы она будет выведена в одну строку, если для переноса на другую строку используются знаки ‘\<Enter>’, так как под символы ‘\<Enter>’ память не отводится.
Пример 5.
printf (“Эта строковая константа\
при выводе на консоль\
будет записана в одну строку”);
Если несколько строк записаны без разделителя или через разделители пробел, Enter или табуляция, то компилятор объединит их в одну строку.
Пример 6.
"Hel" "lo, "
"Wor" "ld""!"
Особенностью представления строковых констант в языке C является то, что под строковую константу компилятор отводит на один байт больше, чем число символов в константе. Этот дополнительный байт всегда является в константе последним и заполняется нулевым значением ‘\0’.
Пример 7
H |
e |
l |
l |
o |
, |
W |
o |
r |
l |
d |
! |
‘\0’ |
Под разделительные символы (пробел, Enter, табуляция), присутствующие в строке, также отводятся соответствующие байты.
Правила определения типа константы.
Целая константа относится к типу int, если эта константа входит в интервал значений типа int. Если эта константа не входит в интервал значений типа int, то она считается константой типа unsigned int, если же она не входит в интервал unsigned int, то она считается константой типа long int, если же она не входит в интервал long int, то она считается константой типа unsigned long int.
Константа с десятичной точкой считается константой типа double, если она помещается в соответствующий интервал изменения.
Константы символьного и строкового типов задаются явно.
В языке C имеется механизм явного задания типов констант с помощью суффиксов. В качестве суффиксов для целочисленных констант могут использоваться u, l, h, U, L, H, для вещественных констант – l, f, L, F.
Пример 8
Тип данных |
Константы |
short int |
12h, 34H |
long int |
23L, -237l |
unsigned int |
17u, 456U |
unsigned long int |
89lu, 89Lu, 89ul, 7UL, 7Ul |
unsigned short int |
45uh, 45uH |
float |
23.4F, -67.7E-24f |
long double |
1.39l, 12.0L |