Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лекция 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 |