![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Все компиляторы С и C++ позволяют объявлять некоторые типы как беззнаковые. В настоящее время модификатор unsigned (без знака) можно использовать с четырьмя типами данных: char, short int и long int.
Тип | Длина (байтов) | Диапазон значений |
char | от -120 до 127 | |
int | от -32768 до 32767 | |
short | от -32768 до 32767 | |
long | от –2 147 493 648 до2 147 483 647 | |
unsigned char | от 0 до 255 | |
unsigned int | от 0 до 65 535 | |
unsigned short | от 0 до 65 535 | |
unsigned long | от 0 до 4 294 967 295 | |
float | от 3.4Е-38 до 3.4Е+38 | |
double | от 1.7Е-308 до 1.7Е+308 | |
long double | от 1.1Е-4932 до 1.1Е+4982 | |
pointer | (near,based) | |
pointer | (far.huge) |
Обычно данный тип служит модификатором одного из трех ранее описанных типов. Поэтому мы можем использовать комбинации ключевых слов unsigned int или unsigned long как обозначения типов. Для указания типа unsigned int достаточно привести только ключевое слово unsigned. Некоторые вычислительные системы никак не обеспечивают аппаратную реализацию типа unsigned long; кроме того, существуют модели микропроцессоров, в которых unsigned - специальный тип фиксированного размера.
Целые беззнаковые константы записываются точно так же, как и обычные целые константы, с тем лишь исключением, что использование знака — запрещено.
Целые переменные без знака описываются и инициализируются совершенно аналогично тому, как это делается в случае обычных целых переменных. Ниже приведено несколько примеров:
unsigned int students;
unsigned players;
unsigned short ribs = 6;
Применение данного типа при введении в программу некоторой переменной гарантирует, что она никогда не станет отрицательной. Кроме того, если вы имеете дело только с положительными числами, вы сможете воспользоваться тем, что данные указанного типа могут принимать большие значения, чем данные эквивалентного типа со знаком. Обычно это применяется при адресации памяти и организации счетчиков.
6.5.2. Числа с плавающей точкой.
В большинстве проектов разработки программного обеспечения оказывается вполне достаточным использовать данные целых типов. Однако в программах вычислительного характера часто применяются числа с плавающей точкой. В языке Си такие данные описываются типом float; они соответствуют типу real в Фортране и Паскале.
Алгебраическая запись числа представляет собой произведение некоторого десятичного числа на степень, основание которой равно десяти. Ниже приведено несколько примеров.
Число | Алгебраическая запись | Запись для ввода в машину |
1 000 000 000 | 1,0*109 | 1.0е9 |
123 000 | 1,23*105 | 1.23е5 |
322.56 | 3,2256*102 | 3.2256е2 |
0.000056 | 5,6*10-5 | 5.6е-5 |
В первом столбце числа изображены в обычной записи, во втором приведена соответствующая алгебраическая запись, а в третьем столбце числа показаны в том виде, в котором они обычно представляются при вводе в машину и при выводе из нее — с символом е, за которым следует показатель степени по основанию десять (порядок).
Обычно для размещения в памяти числа с плавающей точкой отводится 32 бита — 8 бит для представления порядка и знака и 24 бита — для мантиссы (т. е. коэффициента при степени десяти). Важным фактом, который вам необходимо знать, является то, что такой способ дает возможность представлять числа с точностью до 6—7 десятичных цифр в диапазоне ±(1037 — 1038). Это может оказаться удобным, если вам понадобится обрабатывать числа того же порядка, что масса Солнца (2.0еЗ0 кг) или заряд протона (1.6е—19 Кл). (Многим нравится использовать подобные числа.)
Формирование представления числа с плавающей точкой состоит в его разбиении на дробную часть и порядок; затем обе части раздельно помещаются в память. Поэтому число 7.00 из вышеприведенного списка нельзя поместить в память тем же способом, что и целое число 7, хотя оба имеют одно и то же значение. В десятичной записи (точно так же как и в двоичной) число «7.0» можно было бы записать в виде «0.7Е1»; тогда «0.7» будет дробной частью, а «1» — порядком. Для размещения чисел в памяти машины будут, конечно, использоваться двоичные числа и степени двойки вместо степеней десяти. Здесь мы остановимся лишь на различиях, связанных с практическим использованием чисел этих двух типов.
1. Целые числа не имеют дробной части, в то время как числа с плавающей точкой могут представлять как целые, так и дробные числа.
2. Числа с плавающей точкой дают возможность представлять величины из более широкого диапазона, чем целые.
3. При некоторых арифметических операциях, например при вычитании одного большого числа из другого, использование чисел с плавающей точкой приводит к большей потере точности.
4. Операции над числами с плавающей точкой выполняются, как правило, медленнее, чем операции над целыми числами. Однако сейчас уже появились микропроцессоры, специально ориентированные на обработку чисел с плавающей точкой, и в них эти операции выполняются довольно быстро.
6.5.3. Описание переменных с плавающей точкой.
Переменные с плавающей точкой описываются и инициализируются точно таким же образом, что и переменные целого типа. Ниже приведено несколько примеров:
float noah, jonah;
double trouble;
float planck = 6.63e-34;
Константы с плавающей точкой
Правила языка Си допускают несколько способов записи констант с плавающей точкой. Наиболее общая форма записи константы — это последовательность десятичных цифр со знаком, включающая в себя десятичную точку, затем символ е или Е и показатель степени по основанию 10 со знаком. Вот два примера:
-1.56Е+12 2.87е-3
Знак + можно не писать. Разрешается также опускать либо десятичную точку, либо экспоненциальную часть, но не одновременно. Кроме того, можно не писать дробную или целую часть, но не обе сразу. Ниже приведено еще несколько правильно записанных констант с плавающей точкой:
3.14159.2 4е16.8Е-5 100.
Использовать пробелы при записи констант запрещается
1.56Е+ 12 — НЕПРАВИЛЬНО
6.5.4. Перечисляемый тип данных (enum).
При объявлении переменной перечисляемого типа с ней связывается набор именованных целочисленных констант, называемых перечисляемыми константами. В каждый момент времени переменная может иметь значение одной из констант, и к ней можно обращаться по имени. К примеру, следующее описание создает перечисляемый тип air_supply, перечисляемые константы EMPTY, USEABLE и FULL, и перечисляемую переменную instructor_tank:
enum air_supply {EMPTY,
USEABLE,
FULL=5 } instructor_tank;
Все константы и переменные имеют тип int, каждая константа автоматически получает по умолчанию некоторое значение, если не указывается какое-либо другое. В предыдущем примере константа EMPTY имеет по умолчанию целое значение ноль, так как она — первая в списке и не переопределена особо. Значение константы USEABLE равно 1, поскольку она следует непосредственно за константой с нулевым значением. Константа FULL инициализирована отдельно и имеет значение 5; если бы вслед за ней в списке была еще одна константа, эта новая константа была бы равна 6.
После создания типа air_supply вы можете в дальнейшем описать другую переменную, student_tank, следующим образом:
enum air_supply student_tank;
После этого оператора можно выполнить следующие:
instructor_tank = FULL;
student_tank = EMPTY;
При этом переменная instructor_tank получит значение 5, а переменная student_tank — значение 0.
Дата публикования: 2015-01-13; Прочитано: 411 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!