Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кетков.doc
Скачиваний:
17
Добавлен:
27.09.2019
Размер:
2.22 Mб
Скачать

4.3. Внешнее представление числовых констант

В программах на языках C, C++ встречаются литеральные и именованные числовые константы целого или вещественного типа. Числовые константы, употребляемые в тексте программ в арифметических или логических выражениях, называют литеральными. Они представлены числовыми литерами – цифрами, знаками + или –, точками, отделяющими целую часть числа от дробной, показателями десятичного порядка. Например:

x=-25; //целочисленная константа -25

y=y+2.4; //вещественная константа в форме с фиксированной запятой

z=2.1e-6;// вещественная константа в форме с плавающей запятой

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

#define Nmax 100

const double eps=1e-6;

..................

int a[Nmax]

..................

for(i=0; i<Nmax; i++)

....................

if(abs(z)<eps)...

Удобство именованных констант заключается в минимальных переделках программы, связанных с изменением размерности массивов и точности других управляющих констант. Достаточно изменить одну строку программы с объявлением той или иной константы и не менять другие операторы, использующие эту константу.

Под внешним представлением числовой информации мы подразумеваем способы записи данных, используемые в текстах программ, при наборе чисел, вводимых в ЭВМ по запросу программы, при отображении результатов на экране дисплея или на принтере.

Наличие в естественной записи числа точки (3.1415) или указателя десятичного порядка (314.159265e-02, 314.159265E-02) означает, что соответствующее значение представлено в ЭВМ в виде вещественного числа с плавающей запятой.

Кроме естественного представления числовых констант в виде целого или вещественного числа языки программирования допускают различные добавки в начале ("префиксы") или конце ("суффиксы") числа, определяющие способы преобразования и хранения данных в памяти компьютера.

В алгоритмическом языке C активно используются как префиксы, так и суффиксы:

0x5,0X5 – шестнадцатеричное целое число (префикс – 0x или 0X);

05 – восьмеричное целое число (префикс – незначащий нуль в начале);

5H,5h – короткое целое число (суффикс – h или H от sHort)

5U,5u – целое число без знака (суффикс – u или U, от Unsigned);

5HU,5hu,5Hu,5hU – короткое целое число без знака;

5L ,5l – длинное целое число (суффикс – l или L, от Long);

5LU,5lu,5Lu,5lU – длинное целое число без знака;

5f,5F – короткое вещественное число (суффикс – f или F, от Fixed);

5LF,5FL,5fl,5lf,5Lf,5lF,5Fl,5fL – длинное вещественное число.

Входной язык системы визуального программирования BCB дополнительно позволяет использовать следующие суффиксы:

i8 – для однобайтовых целых чисел со знаком (например, 127i8)

i16 – для двухбайтовых целых чисел со знаком;

i32 – для четырехбайтовых целых чисел со знаком;

i64 – для восьмибайтовых целых чисел со знаком;

ui64 – для восьмибайтовых целых чисел без знака.

4.4. Объявление и инициализация числовых переменных

Переменные числового типа, используемые в программе, обязательно должны быть объявлены до их использования в тех или иных исполняемых операторах. В отличие от языка Pascal алгоритмические языки C, C++ позволяют вводить такие описания не только в начале программных единиц (функций), но и по ходу формирования программы:

int main(void)

{ int i,j;

...........

s=0;

for(int k=0; k<10; k++)

........................

В приведенном примере переменные i и j объявлены в начале функции, а объявление переменной k встретилось в операторе цикла. По стандарту языка C++ место объявления переменной определяет сферу ее действия. Переменные, описанные в начале функции (такие как i и j в приведенном выше примере), считаются локализованными в данной функции и могут быть использованы в любой части тела этой функции. Повторное объявление переменных с такими же именами считается ошибкой (дублирование имен переменных). В отличие от этого действие переменных, объявленные в некотором внутреннем блоке функции (в нашем примере переменная k объявлены в цикле for), распространяется только на время работы этого блока. Т.е после выхода из цикла память, выделенная под переменную k, возвращается системе, и без повторного переобъявления этой переменной пользоваться уже нельзя. Следует отметить, что это положение стандарта языка C++ в системе BC 3.1 реализовано не так. Повторное объявление такой переменной в следующем внутреннем блоке в системе BC 3.1 приводит к сообщению об ошибке, т.к. при выходе из цикла переменная k продолжает свою жизнь. В средах визуального программирования Borland C++ Builder этот пассаж исправлен.

Объявлению любой переменной предшествует служебное слово, определяющее диапазон допустимых значений – тип переменной. Имена базовых типов числовых данных и соответствующие им характеристики, приведены в табл. 4.1 (BC 3.1) и 4.2 (BCB). Для вещественных чисел указаны минимальные по модулю значения.

Таблица 4.1

Тип

Длина

Минимальное значение

Максимальное значение

Char, signed char

1 байт

-128

127

unsigned char

1 байт

0

255

short int, short

2 байта

-32768

32767

unsigned short

2 байта

0

65535

int, signed

2 байта

-32768

32767

unsigned int,

unsigned

2 байта

0

65535

long, long int

4 байта

-2147483648

2147483647

unsigned long

4 байта

0

4294967265

float

4 байта

3.4*e-38

3.4*e38

double

8 байт

1.7e-308

1.7e308

long double

10 байт

3.4e-4932

1.1e4932

Таблица 4.2

Тип

Длина

Минимальное значение

Максимальное значение

char, __int8

1 байт

-128

127

unsigned char

1 байт

0

255

short int, short,

__int16

2 байта

-32768

32767

unsigned short

2 байта

0

65535

int, signed, __int32

4 байта

-2147483648

2147483647

unsigned int,

unsigned

4 байта

0

4294967265

long, long int

4 байта

-2147483648

2147483647

unsigned long

4 байта

0

4294967265

int64, __int64

8 байт

-4611686018427387904

4611686018427387903

__uint64

8 байт

0

9223372036854775807

float

4 байта

3.4*e-38

3.4*e38

double

8 байт

1.7e-308

1.7e308

long double

10 байт

3.4e-4932

1.1e4932

Объявление переменной можно совместить с присвоением ей начального значения (инициализацией):

int x=18,y=-5;

float a=5F;

В отличие от языка Pascal инициализация локальных переменных в функциях на языках C, C++ происходит при каждом вызове функции.