Программирование >>  Аргументация конструирования 

1 ... 5 6 7 [ 8 ] 9 10 11 ... 108


В некоторых случаях ошибки округления может исправлять сам C + + ; например, выводя информацию на экран, вместо числа 0.999999 C + + выдаст пользователю значение 1.

Ограниченность диапазона

Тип данн! oatтакж ичен. хотя диапазон чисел с плавающей точкой намного обширнее диапазона целочисленных переменных. Максимальным значением типа int является число чуть больше 2 млрд. Максимальное значение неременной тина floa-; приблизительно равно Ю- , т.е. 1 с 38 нулями?.

Представляя переменные с плавающей точкой в стандартном виде, C++

учитывает после десятичной точки только первые шесть разрядов. Остальные разряды становятся жертвами ошибочных округлений. Поэтому действительная переменная может хранить значение 123 000 000 без потери точности из-за округления, в то время как значение 123 456 789 дет к ошибке округления.


Вы уже знаете, что все переменные в программе должны быть объявлены и что им должен быть назначен тип. В табл. 2.1 представлен список некоторых стандартных типов переменных языка C++ с указанием их достоинств и недостатков.

Таблице 1. Переменные C++

ПЕРЕМЕННАЯ

ПРИМЕР

ХАРАКТЕРИСТИКА

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

float

1. OF

Действительные числа

double

Расширенная версии а t ;использует больше памяти, допускает работу с большим диапазоном и обеспечивает более высокую точность вычислений

char

Символьный тип; значением переменных может бть символ алфавита, цифра, знак препинания или знак арифметической операции. Не годится для арифметических операций

string

this is a string

Строка символов, составляющая предложение

long

Потенциально расширенная версия типа int. В GNU C++ и Microsoft Visual C++ разницы между типами long и int нет

Следующий оператор объявляет переменн1е lVariable типа long тип Le и присваивает им начальн1е значения:

объявление переменной и установка ной 1 long lVariable; lVariable - 1

и dVariable

Следует отдавать себе отчет, что это не означает, будто тип float может представить 7f>*разных значений; вспомните, что говорилось несколько выше о количестве разрядов в числах этого типа. - Прим. ред.





объявление переменной типа double и ее инициализация double dVariable; dVariable = 1.0;

Объявить и инициализировать переменную можно одним оператором: int nVariable = 1; объявление еннсй и ее инициализация

Единственное преимущество инициализации переменной в объявление - уменьшение размеров текстов программ. Но даже и это весьма важное достижение.

Переменная типа char может содержать единственный символ, в то время как строковая переменная - строку символов. Поэтому а можно интерпретировать и как символ а, и как строку, содержащую только букв о (в действительности string не является типом переменной, но в большинстве случаев его можно рассматривать именно так). В главе 9, Второе знакомство с указателями , вы найдете детальное описание этого типа данн1х.

Символ г7 и строка а - это далеко не одно и то же. Если вы захотите присвоить

символьной переменной строковое значение (или наоборот), вы не сможете этого сделать даже в том случае, когда строка содержит единственный символ.

Типы констант

Константой называют произвольную постоянную величину (например, 1, 0.5 или с)- Подобно неременным, константы имеют свой тин. В выражении н = 1; константа 1 имеет тип int. Чтобы привести 1 к типу long, нужно написать n = IL;. Для лучшего понимания можно провести следующую аналогию: если под 1 понимать поездку на грузовике, 1L можно интерпретировать как путешествие на лимузине. Их маршруты могут быть совершенно одинаковыми, но согласитесь, что путешествовать

вторым способом гораздо удобнее.

Константу 1 можно также привести к действительному числу 1.0. Однако заметим, что по умолчанию типом действительной константы является double. Поэтому

1.0 будет числом типа double, а не float.

Специальные символы

Для работы с любыми печатаемыми символами можно использовать переменные типа char или string. По значениями переменных, используемых в качестве символьных констант, могут быть и непечатаемые символы. В табл. 2.2 приведено описание некоторых важных непечатаемых символов.

Таблица 2.2. Специальные символы

СИМВОЛЬНЫЕ КОНСТАНТА! ОБОЗНАЧЕНИЕ ДЕЙСТВИЙ

\п Новая строка

\t Табуляция

\0 Нулевой символ

\ \ Обратная косая черта

С символом новой строки вы уже встречались раньше. Он позволяет разделить строку в любом месте на две части. Например, строка

Это первая а\пЭто вторая строка

при выводе на экран будет выглядеть так:



Это первая строка Это вторая строка

По аналогии символ табуляции \t перемещает выводимую информацию к следующей позиции табуляции. В зависимости от типа компьютера, на котором вы запустите программу, эта позиция может изменяться. Символ обратная косая черта используется для обозначения специальных символов, поэтому, чтобы в1вести его на экран, необходимо записать два символа: \\.

Коллизии между C++ и именами файлов MS DOS j

: В MS DOS для разделения имен файлов в указаниях пути используется символ об- ратной косой черты. Так, root\folderA\fileпредставляет собой путь к файлу ; ;: file в папк ЫегА, которая является подкаталогом каталога root. .. К сожалению, функциональное предназначение обратной косой черты в MS DOS : и C++ не совпадает. Обратная косая черта в C++ используется для обозначения управляющих символов, а ее саму можно вывести с помощью символов \\. По: этому путь MS DOS root\folderA\file представляется в C + + строкой : rroot\\folderA\\file. !

Вы(шжения смешанного /йипа

C++ позволяет использовать в одном выражении переменные разн1х типов. Например, позволено складывать целые и действительные переменные. В следующем выражении переменная nValue является целой:

в следующем в1ражении перед выполнением операции сложения значение nValuel преобразуется к типу double int nValuel = 1;

double fValue = nValuel + 1.0;

Выражение, в котором два операнда относятся к разным типам, называется выражением смешанного типа. Тип генерируемого в результате значения будет соответствовать более мощному типу операнда. В нашем случае перед началом вычислительного процесса nValuel конвертируется в тип double. По тому же принципу выражение одного типа может быть присвоено переменной другого типа, например:

в следующем задании целая часть

fVariable сохраняется ъ nVariable

float fVariable = 1.0;

int nVariable;

nVariab-e = fVariable;

Если переменная в левой стороне равенства относится к типу менее мощному, чем переменная справа, то при таком присвоении можно потерять

точность или диапазон значений (например, если значение переменной fVariable превышает диапазон допустимых значений переменной

nVariable).


Соглашения по именованию

Вы могли заметить, что имя каждой переменной начинается с определенного символа, который, как может показаться, совсем ни к чему (эти специальные символы приведены в таблице ниже). С помощью соглашений по использованию этих симво- лов можно мгновенно распознать, что dvariable - это неременная тина double. \



1 ... 5 6 7 [ 8 ] 9 10 11 ... 108

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика