Типы данных.
Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и выполнения операций. Любые данные, которыми оперируют программы, относятся к определённым типам. Концепция типа данных появилась в языках программирования высокого уровня как естественное отражение того факта, что обрабатываемые программой данные могут иметь различные множества допустимых значений, храниться в памяти компьютера различным образом, занимать различные объёмы памяти и обрабатываться с помощью различных команд процессора. Итак, тип данных определяет характеристики объекта: внутреннюю структуру, размер выделяемой памяти, множество значений и доступные операции над ним. Условно типы можно разделить на три категории:
• простые или базовые типы;
• ссылочные типы, т.е. указатели, ссылки и массивы. Значением переменных этих типов являются адреса в памяти, по которым расположены объекты других типов;
• агрегатные типы, т.е. структуры и классы, позволяющие объединить элементы различных типов и методы работы с ними в один тип.
Для работы с типами С++ предоставляет следующие возможности:
• определить размер типа в байтах оператором sizeof, в качестве аргумента может быть имя типа, имя переменной или более сложное выражение;
• задать альтернативное имя (синоним) существующему типу оператором typedef;
• средства преобразования одних типов в другие;
• механизм определения типа объекта в реальном времени (RTTI);
• оператор typeof позволяет задать тип переменной по указанному выражению. Старые компиляторы могут не поддерживать эту возможность;
• оператор auto позволяет задать тип переменной по инициализирующему выражению, и в этом смысле более удобнее чем typeof. Однако современные компиляторы еще не поддерживают это возможность (в старом стандарте auto является спецификатором времени жизни переменной). Поэтому можно воспользоваться соответствующими макросами из библиотеки Boost.
базовые типы
Следующие типы относятся к базовым:
• void - пустой тип, используется для создания указателей и указания того, что функция не возвращает значений;
• int - целочисленный тип. Спецификторы размера short и long уточняют размер: два байта и четыре соответственно. Спецификаторы знака signed и unsigned определяют использовать ли последний бит для знака. Этот тип является типом по умолчанию;
• float - тип для вещественных чисел;
• double - тип для вещественных чисел двойной точности;
• bool - логический тип. Значение 0 означает ложь, ненулевое значение истину;
• char - символьный тип. Также этот тип может использоваться как целочисленный тип, к нему применимы спецификаторы знака;
• wchar_t - аналогично предыдущему, но для юникод символов;
• __int64, long long - тип для 64-битных целых чисел.
Переменные
Под переменной понимается именованная область памяти, содержащая объект заданного типа. Задание начального значения переменной при ее создании называется инициализацией. Не все компиляторы по умолчанию инициализируют объекты нулями. Поэтому если предполагается, что исходник будет компилироваться на различных компиляторах, лучше инициализировать нулями в ручную, где это необходимо.