Типы данных. Преобразование типов.
Стр 1 из 4Следующая ⇒ Структура программы Программа на языке С++ состоит из директив препроцессора, указаний компилятору, объявлений переменных и/или констант, объявлений и определений функций. Подключение библиотек(стандартных); Включение стандартных библиотек производиться с помощью директивы #include, которая имеет следующий синтаксис: #include "путь" Угловые скобки здесь являются элементом синтаксиса. Директива #include включает содержимое файла, путь к которому задан, в компилируемый файл вместо строки с директивой. Если путь заключен в угловые скобки, то поиск файла осуществляется в стандартных директориях. Если путь заключен в кавычки и задан полностью, то поиск файла осуществляется в заданной директории, а если путь полностью не задан – в текущей директории. С помощью это директивы Вы можете включать в текст программы как стандартные, так и свои файлы. Во включаемый файл можно поместить, например, общие для нескольких исходных файлов определения именованных констант и макроопределения. Включаемые файлы используются также для хранения объявлений внешних переменных и абстрактных типов данных, разделяемых несколькими исходными файлами. Более подробную информацию об использовании заголовочных файлов. Кроме того, как было указано выше, в языке С++ ряд функций, такие как функции ввода/вывода, динамического распределения памяти и т.д., не являются элементом языка, а входят в стандартные библиотеки. Для того чтобы пользоваться функциями стандартных библиотек, необходимо в текст программы включать так называемые заголовочные файлы (в описании каждой функции указывается, какой заголовочный файл необходим для неё). Это также делается с помощью директивы препроцессора #include.
Директива #include может быть вложенной. Это значит, что она может встретиться в файле, включенном другой директивой #include. Допустимый уровень вложенности директив #include зависит от реализации компилятора. Обычно используются <iostream> <math.h> <define> и так далее в зависимости от функционала вашей программы. Рабочее пространство(пространство имён)-принято использовать STD Синтаксис: using namespace std;
Переменные и константы: Объявление переменной Объявление переменной задает имя и атрибуты переменной. Атрибутами переменной могут быть тип, количество элементов (для массивов), спецификация класса памяти, а также инициализатор. Инициализатор – это константа соответствующего типа, задающая значение, которое присваивается переменной при создании. Объявление переменной имеет следующий синтаксис: Примеры объявления переменных
В языке С++ нет ограничений на количество символов в имени. Однако некоторые части реализации (в частности, компоновщик) недоступны автору компилятора, и они иногда накладывают такие ограничения. Константы (константные переменные) В языке С++ введена концепция определяемых пользователем констант для указания на то, что значение нельзя изменить непосредственно. Это может быть полезно в нескольких отношениях. Например, многие объекты не меняются после инициализации; использование символических констант приводит к более удобному в сопровождении коду, чем применение литералов непосредственно в тексте программы; указатели часто используются только для чтения, но не для записи; большинство параметров функций читаются, но не перезаписываются.
Чтобы объявить объект константой, в объявление нужно добавить ключевое слово const. Так как константе нельзя присваивать значения, она должна быть инициализирована.
Типичным является использование констант в качестве размера массивов и меток в инструкции case. Отметьте, что const модифицирует тип, т.е. ограничивает возможное использование объекта, но не указывает способ размещения константного объекта. Простым и типичным использованием константы является тот случай, когда значение константы известно во время компиляции и под неё не требуется выделение памяти. Для массива констант, как правило, требуется выделение памяти, так как, в общем случае, компилятор не в состоянии определить, к какому элементу массива происходит обращение в выражении. Объявление типа typedef Объявление, начинающееся с ключевого слова typedef, вводит новое имя для типа, не для переменной данного типа. Целью такого объявления часто является назначение короткого синонима для часто используемого типа. Например, при частом применении unsigned char можно ввести синоним uchar.
Имена, вводимые с помощью typedef, являются синонимами, а не новыми типами. Следовательно, старые типы можно использовать совместно с их синонимами. Если вам нужны различные типы с одинаковой семантикой или с одинаковым представлением, обратитесь к перечислениям или классам. Типы данных. Преобразование типов. Типы данных в С++ таковы: Bool- логический тип. Имеет значение true или false(истина или ложь) истина-1, ложь-0.
1.int (целый); Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного — 4 байта. Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном — int и long int.
2.char (символьный); Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от О до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов. Стандарт C++ определяет три типа данных для хранения вещественных значений: float, double и long double. Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка. величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Мантисса — это число, большее 1.0, но меньшее 2.0. Поскольку старшая цифра мантиссы всегда равна 1, она не хранится. Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка — его диапазон. Как можно видеть из таблицы в конце записи, при одинаковом количестве байт, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления. Спецификатор long перед именем типа double указывает, что под его величину отводится 10 байт. Константы с плавающей точкой имеют по умолчанию тип double. Можно явно указать тип константы с помощью суффиксов F, f (float) и L, l (long). Например, константа 2E+6L будет иметь тип long double, а константа 1.82f — тип float.
1. wchar_t (расширенный символьный); Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как правило, он соответствует типу short. Строковые константы типа wchar_t записываются с префиксом L, например, L»Gates».
2. float (вещественный); 3. double (вещественный с двойной точностью). Спецификаторы типа:
Тип -> Диапазон значений-> Размер (байт) bool true и false 1 signed char -128 … 127 1 unsigned char 0 … 255 1 signed short int -32 768 … 32 767 2 unsigned short int 0 … 65 535 2 signed long int -2 147 483 648 … 2 147 483 647 4 unsigned long int 0 … 4 294 967 295 4 float 3.4e-38 … 3.4e+38 4 double 1.7e-308 … 1.7C+308 8 long double 3.4e-4932 … 3.4e+4932 10 Любые операнды типа char, unsigned char или short преобразуются к типу int по правилам:
Преобразование других типов данных осуществляется следующим образом: 1. Если один из операндов имеет тип long double, то другой преобразуется к типу long double. 2. Если один из операндов имеет тип double, то другой преобразуется к типу double. 3. Если один из операндов имеет тип float, то другой преобразуется к типу float. 4. Иначе, если один из операндов имеет тип unsigned long, то другой преобразуется к типу unsigned long. 5. Иначе, если один из операндов имеет тип long, то другой преобразуется к типу long. 6. Иначе, если один из операндов имеет тип unsigned, то другой преобразуется к типу unsigned. 7. Иначе оба операнда должны иметь тип int. Тип результата тот же, что и тип участвующих в выражении операндов.
Тип void Кроме перечисленных, к основным типам языка относится тип void, но множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов. Преобразование типов: Неявное преобразование типов(выполняется самим компилятором) Явное выполняется вручную программистом. Неявное: Для наглядного примера представлю таблицу с преобразованиями типов данных. В таблице рассмотрим операцию деления. В качестве целочисленного типа данных возьмем int, ну и вещественный тип данных у нас будет float.
Из таблицы видно, что меняя переменные различных типов данных местами, результат остается тот же (в нашем случае это делимое и делитель). О неявном преобразовании типов данных все.
Явное: Для явного преобразования типов в С++ предусмотрена очень удобная штука: float(15) / 2 // результат равен 7.5, число 15 преобразуется в вещественный тип данных float. double(15) / 2 // результат равен 7.5 – тоже самое!!!
Как бы не поставили это выражение, результат будет одинаковым.
Второй способ (на мой взгляд более удобный): Использовать данную нам «от природы» возможность С++: static_cast.
static_cast</*тип данных*/>(/*переменная или число*/)
пример: static_cast<float>( 15 ) /2 результат равен 7.5 Пример с переменной:
В случае с переменной надо понимать, что в строке 2 переменная ret не преобразуется в тип данных float, а всего лишь на всего создается временная копия переменной ret с типом данных float. 3)Операции отношения. Логические операции. Приоритет операций в С++.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|