Типы данных в СИ
Тип данных – это описание диапазона значений, которые может принимать переменная, указанного типа. Каждый тип данных характеризуется:1. количеством занимаемых байт(размером)
2. диапазоном значений которые может принимать переменная данного типа.
Все типы данных можно разделить на следующие виды:
1. простые (скалярные) и сложные (векторные) типы;
2. базовые (системные) и пользовательские(которые определил пользователь).
В языке СИ систему базовых типов образуют четыре типа данных:
1. символьный,
2. целочисленный,
3. вещественный одинарной точности,
4. вещественный двойной точности.
Подробное описание типов данных в языке СИ
тип | Символьный тип | Целочисленный тип | Вещественный тип одинарной точности | Вещественный тип двойной точности |
описание | char | int | float | double |
размер | 1 байт (8 бит) | 4 байта (32 бита) | 4 байта (32 бита) 23 бита – мантисса; 8 бит – порядок; 1 бит – знак. |
8 байт (64 бита) 52 бита – мантисса; 11 бит – порядок; 1 бит – знак. |
диапазон значений | -128 ... 127 | 2147483648 ... 2147483647 | ±3.4Е±38 Точность до 7 знаков после запятой |
±1.7Е±308 Точность до 17 знаков после запятой |
В языке СИ предусмотрены модификаторы типов данных двух видов:
1. модификаторы знака: signed и unsigned.
2. модификаторы размера: short и long.
Более подробно модификаторы типов описаны в таблице:
Модификатор | signed | unsigned | short | long |
описание | осуществляет преобразование целочисленных значений к знаковым числам | осуществляет преобразование целочисленных значений к незнаковым числам | уменьшает размер целочисленного типа в два раза | увеличивает размер типа данных |
использование | совместно с типами char и int. используется по умолчанию | совместно с типами char и int. | только с типом int | совместно с типами int и double. |
пример | используется по умолчанию | unsigned char Диапазон: 0 ... 255 | short int Диапазон: -32768 ...32767 | long double – тоже, что и double Но в стандарте IEEE: 80 бит |
Комплексные числа в СИ
Комплексные числа введены в стандарте C99. float _Complex
double _Complex
long double _Complex
Все это счастье находиться в библиотеке complex.h :)
Минимальные и максимальные значения всех базовых типов данных языка СИ описаны в библиотеках: limits.h – содержит диапазоны целочисленных значений, float.h – содержит диапазоны вещественных значений.
Логический тип данных в СИ
Стандарт С89: Логический тип – int
0 – ложь (false);
не 0 – истина (true). Т.е как такового логического типа не создано, а вместо него используется int.
Стандарт С99:
Логический тип - _Bool
Ключевые слова: bool true false
А это счастье в библиотеке stdbool.h
Операторы объявлений
Переменная – именованная область памяти вычислительной машины, предназначенная для хранения значений определенного типа, с
произвольным методом доступа: чтение и запись. Имя переменой – разрешенный идентификатор языка СИ не использовавшийся ранее для
обозначения других переменных, типов, элементов перечислений или имен функций. Оператор объявления переменных имеет следующий
синтаксис: тип имя1[,имя2[,...]]; Примеры: int a, b, c;
double x, y;
char ch;
Есть некоторые негласные правила, т.е исполнения который является хорошим тоном, но делать это не обязательно:
1. каждое объявление переменных нового типа начинается с новой строки;
2. из названия переменной должно быть понятно зачем она и что в ней будет храниться(хотя иногда из-за таких вот информативных названий скорость написания кода падает, т.к некоторых заносит и они называют переменные целыми предложениями);
3. поэтому появляется правило: название переменной не должно быть слишком длинным;
4. после объявления переменной очень желательно в комментариях пометить зачем она;
5. необходимо разделять имена переменных пробелами.
Оператор объявления переменных с инициализацией имеет следующий синтаксис: тип имя1[=значение1][, имя2[=значение2][,...]]; Примеры:
int a=26, b=032, c=0x1A;
double x=2.5e2,y=0x1.ffe-3;
char ch=’Z’;
Константы в СИ
В языке СИ присутствует три вида констант:1. целочисленные,
2. вещественные,
3. символьные.
Целочисленные константы
1. Десятичная константа указывается десятичным числом в обычной форме.
2. Восьмеричная константа указывается числом, начинающимся с цифры ноль и содержащим цифры 0...7.
3. Шестнадцатеричная константа указывается целым числом с префиксом 0x или 0X, содержащим цифры 0...9 и буквы латинского алфавита a...f, A...F.
Вещественные константы записываются в десятичной или шестнадцатеричной системе исчисления. Позиция запятой указывается точкой, экспонента указывается после латинской буквы e (или E). Символьным константам предшествует символ \, это так называемое "экранирование" . В языке СИ присутствуют специальные символы:
‘\’’ – одинарная кавычка,
‘\”’ – двойная кавычка,
‘\\’ – обратный слеш,
‘\?’ – знак вопроса,
‘\a’ – звуковой сигнал,
‘\b’ – удаление символа,
‘\f’ – прокрутка страницы,
‘\n’ – перевод строки,
‘\r’ – возврат каретки в начало строки,
‘\t’ – горизонтальная табуляция,
‘\v’ – вертикальная табуляция.
В языке СИ можно также создавать переменные, имеющие константное значение (их значение нельзя изменить). Объявление таких «переменных» имеет следующий синтаксис: const тип имя1=значение1[,имя2=значение2[,...]]; Примеры:
const unsigned int x=80, y=25;
const double pi=3.1415;
Оператор создания типов данных в СИ
Оператор typedef используется для создания пользовательских типов данных, синтаксис его использования: typedef имя_старого_типа
имя_нового_типа; Пример: typedef unsigned int word;
В СИ согласно стандарту, определение типов может производиться практически в любом месте программы(т.е нет строго определенного блока для определения типов данных).Функция для определения размера типа, или переменной какого-либо типа: sizeof, она возвращает количество занимаемых байт в памяти. Пример:
sizeof(int) //вернет 4
sizeof(char) //результат 1
sizeof(double) // вернет 8