Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otveti_k_programm.doc
Скачиваний:
0
Добавлен:
26.09.2019
Размер:
1.55 Mб
Скачать
  1. Директивы препроцессора #include, #define

Появление директив

#include <файл_1>

#include "файл_2"

...

#include <файл_n>

приводит к тому, что препроцессор подставляет на место этих ди-

ректив тексты файлов, соответственно, файл_1, файл_2,..., файл_n.

Если имя файла заключено в угловые скобки <>, то поиск файла

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

Обычно в этот каталог помещаются все файлы с расширением .h.

С помощью директивы #define, вслед за которой пишутся имя

макро и значения макро, оказывается возможным указать препро-

цессору, чтобы он при любом появлении в исходном файле на Си

данного имени макро заменял это имя на соответствующее значе-

ние макро. Макро могут иметь параметры.

Например, директива

#define pi 3.1415962

связывает идентификатор pi со значением 3.1415962.

  1. Типы данных языка С++: концепция типов данных, основные типы данных, иерархия типов.

Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.

Тип данных определяет:

внутреннее представление данных в памяти компьютера;

множество значений, которые могут принимать величины этого типа;

операции и функции, которые можно применять к величинам этого типа.

Исходя из этих характеристик, программист выбирает тип каждой величины, используемой в программе для представления реальных объектов. Обязательное описание типа позволяет компилятору производить проверку допустимости различных конструкций программы. От выбора типа величины зависит последовательность машинных команд, построенная компилятором.

Все типы языка С++ можно разделить на простые (скалярные), составные (агрегатные) и функциональные. Простые типы могут быть стандартными и определенными программистом.

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

Целые числа – это числа, которые используются для счета, на-

пример: 1, 2, 5, -21 и 752.

Числа с плавающей точкой могут содержать дробные разряды и

экспоненту (5.4567*1065

). Иногда их называют действительными

(вещественными) числами.

Текст состоит из символов (а, Z, !, 3) и строк ("Это просто про-

верка").

Указатели не хранят информацию; вместо этого каждый из них

содержит адрес памяти ЭВМ, в которой хранится информация.

Простые типы делятся на целочисленные типы и типы с плавающей точкой. Для описания стандартных типов определены следующие ключевые слова:

int (целый);

char (символьный);

wchar_t (расширенный символьный);

bool (логический);

float (вещественный);

double (вещественный с двойной точностью).

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

short (короткий);

long (длинный);

signed (со знаком);

unsigned (без знака).

Иерархия -

double

float

long

int

short

  1. Типы данных языка С++: концепция типов данных, преобразование и приведение типов.

Явное приведение осуществляется с помощью указания целевого типа данных (того, к которому нужно привести) в круглых скобках перед выражением:

double s = 2.71;

int t = (int) s;

cout << t << endl; // 2

cout << (int) 3.14 << endl; // 3

cout << (int) (2.5 + t) << endl; // 4

Приведение к целым числам от вещественных осуществляется путём отбрасывания целой части (не округлением).

В стандарте C++ предусмотрено несколько шаблонных функций для преобразования типов.

const_cast<> - предназначен для снятия модификаторов const и volatile. Александреску написал интересную статью о использовании volatile и const_cast для многопоточного программирования.

dynamic_cast<> - преобразовывает указатель на базовый тип к указателю на тип наследник, если объект действительно наследник, или вернет NULL в противном случае. При преобразовании используется RTTI (run-time type identification).

static_cast<> - шаблонная функция, для статического (т.е. на этапе компиляции) преобразования типов

Эта шаблонная функция позволяет char* преобразовать в int, A* в B*, не требуя каких-то родственных отношений между ними. reinterpret_cast

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]