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

Для того чтобы иметь возможность работать с тем или иным типом данных необходимо задать переменную соответствующего типа. Это осуществляется с использованием следующего синтаксиса:

<тип переменной> <имя_переменной>;

Например int arg; объявляет целочисленную переменную с именем arg.

В таблице 1 представлены основные типы данных:

Таблица 1. Основные базовые типы данных

Тип Описание
int Целочисленный (обычно 32 бита)
short Целочисленный (обычно 16 бит)
char Символьный тип 8 бит
float Вещественный тип 32 бита
double Вещественный тип 64 бита

 

При выборе имени переменной желательно использовать осмысленные имена. При определении имени можно использовать как верхний, так и нижний регистры букв латинского алфавита. Причем первым символом обязательно должна быть буква или символ подчеркивания ‘_’.

Язык С при объявлении переменных различает большой и малый регистры.

В отличие от многих языков программирования высокого уровня, в языке С переменные могут объявляться в любом месте текста программы.

В языке С просто реализуются элементарные математические операции: сложения, вычитания, умножения и деления:

int a, b;

a=4; // с начальными значениями

b=8;

int c;

c= a+b; //сложение двух переменных

с=a-b; //вычитание

c=a*b; //умножение

c=a/b; //деление

Представленные операции можно выполнять не только с переменными, но и с конкретными числами, например

c = 10 + 5;

c = 8*4;

float d;

d = 7/2;

Результатом первых двух арифметических операций будут числа 15 и 32 соответственно, но при выполнении операции деления в переменную d будет записано число 3, а не 3,5. Это связано с тем, что число 7 в языке С будет интерпретироваться как целочисленная величина, которая не может содержать дробной части. Поэтому полученная дробная часть 0,5 будет отброшена. Для реализации корректного деления одного числа на другое следует использовать такую запись: d = 7.0/2;

или

d = (float )7/2;

В первом случае вещественное число делится на два и результат (вещественный) присваивается вещественной переменной d. Во втором варианте выполняется приведение типов: целое число 7 приводится к

вещественному типу float, а затем делится на 2.

Второй вариант удобен, когда выполняется деление одной целочисленной переменной на другую:

int a, b;

a = 7;

b = 2;

d = a/b;

В результате значение d будет равно 3, но если записать

d = (float )a/b;

то получим значение 3,5.

Если переменная d является целочисленной, то результат деления всегда будет записан с отброшенной дробной частью.

Приоритет операций умножения и деления выше приоритета операций сложения и вычитания.

Для того чтобы изменить порядок вычисления (поменять приоритеты), используются круглые скобки :

double arg = (25.0 + 60.0)*n/SCALE;

Здесь сначала выполняется операция сложения и только затем операции умножения и деления.

Для простоты программирования в языке С реализованы компактные операторы инкремента и декремента, т.е. увеличения и уменьшения значения переменной на 1 соответственно. Данные операторы могут быть записаны в виде

i++; // операция инкремента

++i; // операция инкремента

i-- ; // операция декремента

--i; // операция декремента

Разницу между первой и второй формами записи данных операторов можно продемонстрировать на следующем примере:

int i=10, j=10;

int a = i++; //значение a = 10; i = 11;

int b = ++j; //значение b = 11; j = 11;

Из полученных результатов видно, что если оператор инкремента стоит после имени переменной, то сначала выполняется операция присваивания и только затем операция инкремента. Во втором случае наоборот, операция инкремента реализуется до присвоения результата другой переменной. Поэтому значение a = 10, а значение b = 11.