Double a, Stop, B4;
Инициализация переменных.В соответствии с синтаксисом языка переменные автоматической памяти после определения по умолчанию имеют неопределенные значения. Надеяться на то, что они равны, например, 0, нельзя. Однако переменным можно присваивать начальные значения, явно указывая их в определениях:
тип имя_ переменной=начальное значение;
Этот прием назван инициализацией. В отличие от присваивания, которое, осуществляется в процессе выполнения программы, инициализация выполняется при выделении для переменной участка памяти. Примеры определений с инициализацией:
float pi=3.1415, cc=1.23;
unsigned int. year=1997;
Именованные константы. Вязыке Си, кроме переменных, могут быть определены константы, имеющие фиксированные названия (имена). В качестве имен констант используются произвольно выбираемые программистом идентификаторы, не совпадающие с ключевыми словами и с другими именами объектов. Традиционно принято, что для обозначений констант выбирают идентификаторы из больших букв латинского алфавита и символов подчеркивания. Такое соглашение позволяет при просмотре большого текста программы на языке Си легко отличать имена переменных от названий констант.
Первая возможность определения именованных констант, это перечисляемые константы, вводимые с использованием служебного слова enum.
Вторую возможность вводить именованные константы обеспечивают определения такого вида:
constтип имя_константы=значение_константы;
Здесь const - квалификатор типа, указывающий, что определяемый объект имеет постоянное значение, т.е. доступен только для чтения;
тип - один из типов объектов;
имя константы -идентификатор;
значение_константы должно соответствовать ее типу. Примеры:
const double Е=2.718282;
const long M=99999999;
const F=765;
В последнем определении тип константы не указан, по умолчанию ей приписывается тип int.
Третью возможность вводить именованные константы обеспечивает препроцессорная директива
#define имя_константы значение константы
Обратите внимание на отсутствие символа "точка с запятой" в конце директивы.
Отличие определения именованной константы
const double Е=2.718282;
от определения препроцессорной константы с таким же значением
#define EULER 2.718282
состоит внешне в том, что в определении константы Е явно задается ее тип, а при препроцессорном определении константы EULER ее тип определяется "внешним видом" значения константы. Например, следующее определение
#define NEXT 'Z'
вводит обозначение NEXT для символьной константы 'Z'. Это соответствует такому определению:
const char NEXT = 'Z';
Однако различия между обычной именованной константой и препроцессорной константой, вводимой директивой #define, гораздо глубже и принципиальнее. До начала компиляции текст программы на языке Си обрабатывается специальным компонентом транслятора - препроцессором. Если в тексте встречается директива
#define EULER 2.718282
а ниже ее в тексте используется имя константы EULER, например, в таком виде:
double mix = EULER;
d = alfa*EULER;
то препроцессор заменит каждое обозначение EULER на ее значение и сформирует такой текст:
double mix = 2.718282;
d = alfa*2.718282;
Далее текст от препроцессора поступает к компилятору, который уже "и не вспомнит" о существовании имени EULER, использованного в препроцессорной директиве #define. Константы, определяемые на препроцессорном уровне с помощью директивы #define, очень часто используются для задания размеров массивов, что будет продемонстрировано позже. Подстановка не выполняется в комментариях и в строковых константах.
Именно с помощью набора именованных препроцессорных констант стандарт языка Си рекомендует авторам компиляторов определять предельные значения всех основных типов данных. Для этого в языке определен набор фиксированных имен, каждое из которых является именем одной из констант, определяющих то или иное предельное значение. Например:
FLT_MAX - максимальное число с плавающей точкой типа float;
CHAR_BIT- количество битов в байте;
INT_МIN - минимальное значение для данных типа int.
Чтобы использовать в программе указанные именованные препроцессорные константы, недостаточно записать их имена в программе. Предварительно в текст программы необходимо включить препроцессорную директиву такого вида:
#include <имя заголовочного _файла>
где в качестве имени заголовочного_файпа подставляются:
limits.h - для данных целых типов;
float.h - для вещественных данных.
#include <limits.h>
#include <float.h>
Дата добавления: 2015-10-09; просмотров: 705;