Представление данных в языке Си

В языке Си существует несколько разновидностей целочисленных данных. Они различаются диапазоном возможных значений и тем, что могут ли использоваться отрицательные числа. Основным типом целочисленных данных является тип int. К этому типу относятся целые числа со знаком. Диапазон возможных значений зависит от компьютерной системы для хранения данного типа int. Обычно используется одно машинное слово. При объявлении целочисленной переменной указывается ключевое слово, определяющее тип, затем выбранное имя переменной и ставится ";". Несколько переменных можно объявлять в одном операторе, разделяя их имена запятыми. Значение переменной может быть присвоено способом инициализации, т.е. присвоением первоначального значения при объявлении.
Пример:
int a=21;
int a=21, b= -2;
Обычно в языке Си предполагается, что целочисленное значение записано в десятичной системе счисления, однако в программировании широко используются восьмеричные и шестнадцатеричные числа. Для того, чтобы отметить в какой системе счисления записано данное, перед ним ставится префикс. Для восьмеричного числа префикс 0, для шестнадцатеричного - 0x. При использовании 8-ой и 16-ой систем следует помнить, что в них представляются числа без знака. В языке Си используются три модификации основного целочисленного типа. Для их объявления используются слова short, long и unsigned.
Данные типа short занимают меньший объем памяти и являются данными со знаком. Данные типа long занимают больший объем памяти и являются данными со знаком. Данные типа unsigned используются для представления только положительных чисел. Их диапазон смещен относительно типа int.
В языке Си при достижении максимального значения происходит сброс на минимальное значение и отсчет от него. Разновидностью целочисленных типов в языке Си являются данные символьного типа - char. Объявляется символьный тип также, как и целочисленный. Записи символьных значений заключаются в кавычки. При присвоении символьного значения можно воспользоваться кодом числа. При этом код записывается без вспомогательных знаков.
Пример:
char c="a";
char b=65;
Описанный способ применяется для обозначения непечатаемых символов. В языке Си существуют еще одни "неудобные" символы - управляющие последовательности.

Последовательности Действия
\a предупреждение (звукокой сигнал)
\b возврат на одну позицию
\f перевод страницы
\n перевод строки
\r возврат каретки
\t горизонтальная табуляция
\v вертикальная табуляция
\\ вывести на экран \
\' вывести на экран '
\" вывести на экран "
\0 для вывода 8-го значения
\0x для вывода 16-го значения


Когда символьным переменным присваиваются управляющие последовательности, они должны быть заключены в кавычки.
Ключевые слова, начинающиеся с символа _ включены в компиляторы Си, начиная со стандарта Си99. Так, ключевым словом _bool обозначаются данные логического типа. В языке Си логические данные true принято обозначать 1, а данные false - 0. Таким образом, логические данные являются целочисленными. Т.к. в различных компьютерах используются различные форматы представления слов, то как следствие появляется различие в диапазонах целочисленных значений. Для уточнения диапазонов можно воспользоваться обозначениями 16_t или 32_t, указывающими на 16-битовое или 32-битовое представление слова. Перед словом int можно поставить букву u, указывающую на отсутствие знака в формате представления данных. Для распознания программой введенных обозначений, к ней нужно присоединить файл inttypes.h. При работе с обозначенными типами может возникнуть ситуация, когда конкретная система не поддерживает введенный тип. В связи с этим, в языке Си стандарта Си97 определяется второй набор имен, который гарантирует, что рассматриваемый тип данных будет как минимум достаточно велик, чтобы удовлетворять требованиям спецификации и, по сравнению с другими аналогичными типами, имеет наименьшие размеры. Подобные типы данных именуют данными минимальной ширины. Например, int_least8_t означает наименьший доступный тип данных, хранящий 8-битовое целочисленное значение со знаком. При этом тип может быть реализован как 16-битовое значение.
В некоторых программах необходимо обеспечить максимально-возможную скорость исполнения. Для этой цели в стандарте Си99 имеются типы, называемые быстрейшими типами данных минимальной ширины. Для таких типов используется префикс fast. Например, int_fast8_t. В случае, когда необходимо использовать максимально-возможное по величине целочисленное значение, используются int_max_t или uint_max_t.
В языке Си числа с плавающей точкой относятся к типам float, double и longdouble.
В стандарте Си установлено, что данные типа float должны иметь как минимум 6 значащих цифр и диапазон значений от 10-37 до 1037. Для типа double установлен тот же диапазон значений, а минимальное число значащих цифр увеличено до 10.
Для сообщения о переполнении в стандарте Си99 при выводе значения переменной отображается inf или infinity.
В ситуации связанной с потерей точности образуется т.н. субнормальное значение. Чаще всего это значение отображается как ноль.
В стандарте Си99 появилась поддержка комплексных чисел. Для них существует 3 типа данных: float_complex, double_complex и long double_complex. Все эти типы состоят из двух частей, одна из которых является вещественной, а другая - мнимой частью. При работе с этими типами можно использовать константу I для обозначения квадратного корня из -1.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: