Типы данных в языке С
Среди наиболее известных и востребованных в нынешнее время языков программирования ныне особое место занимает язык под названием СИ. Но для того, чтобы научиться с ним правильно работать, в первую очередь нужно разобраться со всеми его составляющими элементами, среди которых важно обратить внимание на типы данных, используемых в СИ.
Если же рассматривать данные, то сюда входит совершенно любая информация, которую можно хранить, собирать и обрабатывать в наиболее доступном формате. При этом, набор операций и определенного числа значений, которые можно использовать к данным, предопределяет именно конкретный тип данных.
Типы данных
В языке программирования СИ или же СИ++ выделяется несколько типов, среди которых можно выделить основные, а также производные типы данных.
В список основных включены следующие:
- целый тип – int;
- пустой тип – void;
- числа, в которых есть плавающая точка – float;
- числа, в которых есть плавающая точка и которые имеют двойную точность – double;
- логический– bool;
- символьный– char.
Каждый из вышеперечисленных типов применяется в процессе работы с различными значениями. Сам процесс, связанный с проверкой и накладыванием на конкретные типы определенных ограничений именуется программной типизацией. Среди разновидностей типизации выделяют следующие:
- статическая – процесс контроля происходит посредством реализации компиляции;
- динамическая — процесс контроля происходит непосредственно тогда, когда выполняется программа.
Если же рассматривать типизацию, которая применяется в представленном языке, то здесь стоит обратить внимание именно на статический метод типизации. И перед тем, как произойдет процесс компиляции, абсолютно все типы применяемых данных указываются в обязательном порядке.
Простые и сложные типы данных
Если рассматривать те типы, которые используются чаще всего, то здесь стоит выделить простые. В их состав входят следующие:
- типы вещественные;
- типы целочисленные;
- типы логические;
- типы символьные.
Среди сложных, часто называемых составными типами, можно выделить следующие варианты:
- массив – совокупность элементов, которые индексированы между собой;
- структура – совокупность элементов разного типа, которые хранятся в виде единого цельного компонента, а также предоставляют доступ к каждому элементу, входящему в состав конкретной структуры;
- тип строкового образца – массив, в составе которых хранится строка символов.
Для того, чтобы осуществить процесс формирования прочих типов происходит комбинация между собой базовых типов с так называемыми спецификаторами. Те типы данных, процесс создания которых происходит на базе основных типов совместно со спецификаторами называют, как составной тип. Среди спецификаторов, которые встречаются в программировании, стоит выделить такие:
- длинный – long;
- короткий – short;
- беззнаковый – unsigned;
- знаковый – signed.
Если же рассматривать производные типы, то здесь можно найти:
- функции;
- массивы;
- указатели;
- классы;
- структуры;
- ссылки;
- объединения.
Целочисленные типы
Если же рассматривать наиболее востребованные целочисленные типы, то среди них выделяют знаковые и беззнаковые варианты.
Целые числа без использования знаков представлены в виде битов, размещенных в определенной последовательности, которые находятся в интервале чисел от 0 до 2n-1. В данном случае n указывает на число битов, которые используются.
Целые числа со знаками находятся немного в другом диапазоне, который составляет от -2n-1 до +2n-1-1. При этом, стоит обратить внимание на то, что самому старшему биту причисляется именно число 0. Числу положительного вида будет соответствовать 0, а отрицательному наоборот — 1.
Размеры и базовые типы данных, представленных в целочисленном формате, можно увидеть в следующей таблице:
Для того, чтобы представить действительные числа, используется так называемый вещественный тип. В разрядной сетке их можно заметить в форме так называемой нормированного образца.
Если же говорить о том, какая категория числа является нормированной, то здесь стоит выделить одну цифру, которая будет выступать в качестве значащей. При этом, число 0 не может подходить под эту цифру.
Используется она до момента разделения между собой разных частей. Подобное представление в последующем нужно умножить на основание системы непосредственно в той степени, которая необходима. Если же рассматривать число 12345,678 в так называемой форме нормированного варианта, то его можно записать в виде 1,2345678*104.
Если же брать во внимание не десятеричную, а двоичную систему исчисления, то здесь в качестве наиболее значимого разряда, разделяющего части между собой, может выступать только 1. Если же выполнить представление числа в так называемой нормированной форме невозможно, то в качестве значащего разряда здесь может выступать 0.
Те разряды конкретного числа, считаемые наиболее значащими, которые находятся после разделителя, именуются как мантисса. В разрядной сетке числа вещественного образца могут быть представлены в виде таких следующих полей:
- знак – бит, который отвечает за определение вещественного числа (для отрицательных – 1, для положительных – 0);
- степень – указывает на степень, на который должен быть выполнен процесс умножения, если рассматривать нормированную форму;
- целое –бит, который отвечает за определение конкретного знака вещественного числа. В нормированных числах он всегда равняется единице;
- мантисса – разряды конкретного числа, которые являются значащими, а также в нормированной форме находятся сразу после разделителя дробной и целой части.
Для того, чтобы представить вещественные числа, используется несколько типов данных, представленных в таблице:
Если же внимательно посмотреть в таблицу, то можно заметить, что у типов double и float отсутствует бит целого. При этом в состав самого диапазона вещественного числа сразу включено несколько симметричных диапазон.
Символьный тип
Данные, представленные в символьном типе, всегда в памяти компьютера занимает всего лишь 1 байт. Это вполне логично и объясняется тем, что под величины, представленные в символьном виде, выделяется ровно то количество памяти, которое необходимо для того, чтобы запомнить все 256 символов, находящихся на клавиатуре. Сам символьный тип может быть представлен в виде с использованием знака или же без него.
Если же рассматривать величины, представленные типом signedchar, то с его помощью можно осуществлять процесс хранения чисел, находящихся в диапазоне от -128 до 127. Если же брать соответствующие значения unsignedchar, то здесь все значения могут находиться в диапазоне от 0 до 255 символов.
В процессе работы с данными, которые представлены символьным типом, нужно помнить о некоторых достаточно важных правилах. В том случае, если в программе встречаются одиночные символы, то их в обязательном порядке нужно брать в одинарные кавычки. Если же рассматривать строку, которая представлена в виде набора символов, то все применяемые выражения должны быть заключены в двойные кавычки.
Логический тип
Если же рассматривать переменную, представленную в логическом виде, то приобретать она может всего лишь нескольких значение, среди которых есть истина (true) и ложь (false). Все значения, которые не равны 0, расцениваются в качестве true, а если привести его к целому типу, то в виде числа это значение будет равно 1. В свою очередь false равняется 0, что является вполне логичным заключением.
Тип void (пустой)
Числа, которые входят в это множество, приобретают значение пусто. Применяется пустой тип в следующих случаях:
- возможность определения тех функций, с помощью которых невозможно возвратить значения;
- для указателей в качестве базового типа;
- в том случае, если есть необходимость в указании пустого списка аргументов, входящих в состав функции;
- в операциях, где есть необходимость осуществить процесс приведения типов.
Переменные и их объявления
Рассматривая такой элемент, как переменная, стоит обратить внимание на то, что это специальный поименованный участок, предназначенный для хранения данных, представленных в конкретном типе.
Каждая переменная имеет собственное значение, а также идентификатор (имя). Имя применяется для того, чтобы выполнять процесс обращения к определенной ячейке памяти, где происходит хранение конкретного значения. Само имя выглядит в виде определенной совокупности цифр, букв и различных знаков, с помощью которых можно задать имя функции, переменной, а также определенное ключевое слово, используемое в программе. Стоит обратить внимание на то, что язык СИ является достаточно чувствительным к регистру. Если водить большие и маленькие символы, то восприниматься они будут по-разному.
В качестве примера объявления переменных можно рассмотреть следующий:
Что касается однотипных переменных, то их можно группировать, используя в качестве разделителя запятую. Для того, чтобы описать переменные, принадлежащие к категории разных типов, для этого используется точка с запятой. Что же касается места объявления переменных, то их можно разделить на такие группы:
- глобальные – являются доступными из любого места программы, а также могут применяться к абсолютно любым функциям;
- локальные – процесс объявления переменных происходит внутри конкретной функции;
- формальные – процесс описания таких функций происходит непосредственно в списке параметров конкретной функции.
Поэтому, занимаясь изучением языка программирования СИ, в первую очередь нужно максимально детально ознакомиться с используемыми типами.