
- •3.2.4. Алфавит языка c, идентификаторы, ключевые слова, комментарии
- •3.2.5. Константы в c
- •3.2.6. Типы переменных в языке c и их объявление
- •3.2.7. Объявление простых переменных
- •3.2.8. Арифметические операторы и операторы присваивания
- •3.2.9. Преобразования типов
- •3.2.10. Операции отношения и логические операции
- •3.2.11. Условная операция
- •3.2.12. Стандартная библиотека языка c
- •3.2.13. Математические функции c
- •3.2.14. Форматированный вывод данных в c
- •3.2.15. Структура программы на языке c
3.2.6. Типы переменных в языке c и их объявление
В отличие от констант, переменные в программе могут принимать различные значения. В языке C определены следующие типы переменных:
простые переменные (скалярные числовые переменные и символьные переменные);
переменные перечислимого типа (простые переменные целого типа, принимающие значение из заданного набора именованных значений);
указатели (целочисленные переменные, указывающие на другую переменную, т.е. содержащие адрес этой переменной);
массивы (переменные, содержащие совокупность элементов одинакового типа);
структуры (переменные, содержащие совокупность элементов, которые могут иметь разный тип);
объединения (переменные, содержащие совокупность элементов, которые могут иметь различные типы, но занимать одну и ту же область памяти).
Простые переменные могут принимать только одно значение – числовое или символьное. Все остальные типы переменных, как видно из их определений, формируются из простых переменных. Поэтому простые переменные часто называют базовыми, или примитивными, переменными.
Тип константы определяется непосредственно ее значением, например, константа 125 является константой целого типа, а константа 'n' – это константа символьного типа. Тип переменной в программе на языке C должен быть явно задан (объявлен). Объявление переменной имеет следующий синтаксис:
имя-типа идентификатор-1, идентификатор-2, ..., идентификатор-n;
Имя-типа – ключевое слово языка C для обозначения типа (например, int или struct). Как видно из формата, в одном предложении можно объявить несколько переменных, имеющих один и тот же тип.
В языке C все переменные должны быть явно объявлены перед их использованием.
3.2.7. Объявление простых переменных
Рассмотрение типов переменных начнем с простых переменных.
Типы простых переменных языка C приведены в табл. 3.2.3.
Табл. 3.2.3. Типы простых переменных языка C
Ключевое слово |
Тип |
char |
Единичный байт, который может содержать один символ из допустимого множества символов. |
int |
Целое число. |
float |
Число с плавающей точкой одинарной точности. |
double |
Число с плавающей точкой двойной точности. |
В отличие от других типов данных, при объявлении простой переменной для нее может задаваться дополнительное ключевое слово или слова. Эти ключевые слова уточняют тип переменной и называются квалификаторами.
Квалификаторы, которые можно использовать с указанными базовыми типами, приведенные в табл. 3.2.4.
Табл. 3.2.4. Квалификаторы простых переменных языка C
Ключевое слово |
Тип |
short |
Короткое int. |
long |
Длинное int, float или double. |
signed |
Переменная int или char со знаком (первый бит выделяется под знак). |
unsigned |
Переменная int или char без знака. |
const |
Значение переменной не может быть изменено в программе. |
volatile |
Значение переменной может изменяться в программе. |
Если тип переменной опущен, предполагается int (в этом случае должен быть обязательно задан один из квалификаторов).
В объявлении простой переменной, также в отличие от других типов данных, можно задать начальное значение (инициализировать переменную). Инициализация переменной имеет следующий синтаксис:
идентификатор=константа
где идентификатор – это идентификатор переменной, а константа – значение (числовое и символьное), которое присваивается переменной с указанным идентификатором.
Примеры объявления простых переменных:
int i; /* Объявление целой переменной i */
unsigned long A1, A2; /* Объявление двух переменных
типа long без знака */
double epsilon; /* Объявление переменной epsilon
с двойной точностью */
float const pi = 3.1415926; /* Объявление числа p как
константы с плавающей точкой */
5. const maxint = 32767; /* Объявление целой константы */
6. char esc=’\\’; /* Объявление символьной
переменной и присвоение
ей начального значения */
По умолчанию в C выполняются следующие соглашения:
Если указан только квалификатор long или short, а описание типа опущено, то предполагается, что тип – int.
Если опущены квалификаторы signed или unsigned, то для char предполагается signed.
Конкретная реализация приведенных типов с квалификаторами зависит от компьютерной платформы, операционной системы и используемого компилятора.
Представление простых типов данных в компиляторе Boland C++ приведено в табл. 3.2.5.
Табл. 3.1.5. Представление простых типов данных в компиляторе Borland C++
Тип данных |
Размер (бит) |
Диапазон значений |
char |
8 |
-128 ... 127 |
signed char |
8 |
-128 ... 127 |
unsigned char |
8 |
0 ... 255 |
short int |
16 |
-32768 ... 32767 |
unsigned int |
16 |
0 … 65535 |
int |
16 |
-32768 ... 32767 |
long |
32 |
-2147483648 ... 2147483647 |
unsigned long |
32 |
0 … 4294967295 |
float |
32 |
3,410-38 … 3,41038 |
double |
64 |
1,710-308 … 1,710308 |
long double |
80 |
3,410-4932 … 3,4104932 |
Константы тоже хранятся в программы как данные определенного типа. Символьная константа занимает один байт в памяти. Как видно из таблицы существует несколько типов данных для целых чисел. По умолчанию, десятичные целые константы со значением, которое лежит в диапазоне значений для типов short или int, запоминаются в памяти как данные типа int, а константы в диапазоне для значений long запоминаются как данные типа long. Восьмеричные и шестнадцатеричные константы запоминаются как данные типа unsigned int или unsigned long. Любую целую константу (десятичную, восьмеричную или шестнадцатеричную) можно сохранить как тип long, если указать после ее значения букву l или букву L, например: 1L, 020L, 0X10Al.
Если целую десятичную константу требуются представить в памяти как число без знака (unsigned), сразу после значения константы необходимо указать букву u или букву U, например, 12U. Если необходимо определить константу как имеющую тип long unsigned, необходимо указать после константы две буквы в произвольном порядке, например, 0ul.
По умолчанию компилятор предполагает, что константы с плавающей точкой являются числами с удвоенной точностью (типа double), однако, если после константы поставить букву f или букву F, то константа будет трактоваться как данное типа float, например,1.5f. Если необходимо представить константу как данное типа long double, после нее указывается буква l или буква L, например,1.67e-17L.