Представление данных в языке С .
Для того чтобы иметь возможность работать с тем или иным типом данных необходимо задать переменную соответствующего типа. Это осуществляется с использованием следующего синтаксиса:
<тип переменной> <имя_переменной>;
Например int arg; объявляет целочисленную переменную с именем arg.
В таблице 1 представлены основные типы данных:
Таблица 1. Основные базовые типы данных
|
При выборе имени переменной желательно использовать осмысленные имена. При определении имени можно использовать как верхний, так и нижний регистры букв латинского алфавита. Причем первым символом обязательно должна быть буква или символ подчеркивания ‘_’.
Язык С при объявлении переменных различает большой и малый регистры.
В отличие от многих языков программирования высокого уровня, в языке С переменные могут объявляться в любом месте текста программы.
В языке С просто реализуются элементарные математические операции: сложения, вычитания, умножения и деления:
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.