Московский государственный университет имени М.В.Ломоносова
Опубликован: 01.11.2004 | Доступ: свободный | Студентов: 10561 / 332 | Оценка: 4.12 / 4.01 | Длительность: 19:18:00
ISBN: 978-5-9556-0077-9
Специальности: Программист
Лекция 6:

Простые типы данных

< Лекция 5 || Лекция 6: 123456 || Лекция 7 >

Типы данных

Тип данных назначается объекту данных при его объявлении и определяет: значения, которые может принимать объект данного типа; операции, которые используются для манипуляции над объектами заданного типа.

Современные языки программирования, как правило, могут иметь набор простых типов, являющихся встроенными в данный язык программирования, и средства для создания производных типов.

Объектно-ориентированные языки программирования позволяют определять типы класса.

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

Типы данных языка C++

Тип данных определяет размер памяти, выделяемой под переменную данного типа при ее создании.

C++ поддерживает следующие типы данных:

  • базовые типы. Базовые типы указываются зарезервированными ключевыми словами, и их не надо определять.
  • производные типы. Переменные этих типов создаются как с использованием базовых типов, так и типов классов. Это структуры, объединения, указатели, массивы.
  • типы класса. Экземпляры этих типов называются объектами.

Базовые типы языка C++ можно подразделить на две группы: целочисленные и вещественные. Существует еще ключевое слово void, которое используется для описания типа подпрограмм, не имеющих возвращаемого значения, или при указании параметров подпрограмм неизвестного типа.

char

signed char

Символьный тип. Диапазон значений от -128 до 127.

Содержит один символ или строку символов. Каждый символ представляется одним байтом. Компилятор различает как отдельные следующие типы: char, signed char и unsigned char.

unsigned char

Символьный тип. Диапазон значений от 0 до 255.

Каждый символ представляется одним байтом (значение в диапазоне от 0 до 255).

short

signed short

Целый тип. Диапазон значений от -32768 до 32767.

Сокращенное обозначение типа short int. Длина этого типа вне зависимости от используемого компилятора всегда больше или равна длине значения типа char и меньше или равна длине значения типа int.

unsigned short Беззнаковый целый тип. Диапазон значений от 0 до 65535.

int

signed int

Целый тип. Диапазон значений от -2147483648 до 2147483647.

Длина этого типа вне зависимости от используемого компилятора всегда больше или равна длине значения типа short int.

В общем случае размер типа int языка C++ зависит от конкретной реализации.

unsigned int Беззнаковый целый тип. Диапазон значений от 0 до 4294967295.
__intn Целый тип, размер в битах которого определяется значением n, и может быть равным 8, 16, 32 или 64 битам.

long

signed long

Целый тип. Диапазон значений от -2147483648 до 2147483647.

Сокращенное обозначение типа long int.

unsigned long Беззнаковый целый тип. Диапазон значений от 0 до 4294967295
float Тип данных с плавающей точкой. Диапазон значений от 3.4Е-38 до 3.4Е+38.
double

Тип данных с плавающей точкой двойной точности. Диапазон значений от 1.7Е-308 до 1.7Е+308.

Длина типа double вне зависимости от используемого компилятора всегда больше или равна длине типа float и короче или равна длине типа long double.

long double

Тип данных с плавающей точкой двойной точности, длина которого равна длине значений типа double.

Типы double и long double имеют одинаковое представление, но компилятор трактует их как различные типы.

Размер памяти, выделяемой под каждый тип данных языка C\C++, в некотором смысле зависит от используемой платформы и компилятора. Однако все компиляторы гарантируют, что для типа short памяти всегда выделяется меньше или столько же, сколько и для типа int, а тип long всегда "длиннее" или равен типу int.

Символьные типы char и unsigned char представляют значение символа, реализуемое одним байтом. Для использования символов в кодировке Unicode язык C++ предоставляет тип wchar_t, в котором под каждый символ отводятся два байта.

Ключевое слово typedef языка C++ позволяет объявить новое имя существующего типа.

Например:

typedef int my_integer;
my_integer i1=0;

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

Символьным литералом или символьной константой называется символ, заключенный в одинарные кавычки. Целые литералы представляют целочисленные константы в десятичном, восьмеричном или шестнадцатеричном виде.

Восьмеричные литералы начинаются с символа 0, а шестнадцатеричные - с символов 0x.

После литерала может быть указан суффикс, определяющий его тип: U - unsigned int, L - long int.

Например:

00      // Восьмеричное значение, равное 0
oxffff  // Шестнадцатеричное значение, 
        // равное 65535
10L    	// Значение типа long int

При записи шестнадцатеричных литералов каждый знак может принимать значение от 0 до 15. Для записи значений от 10 до 15 принято использовать следующие символы: a - 10, b - 11, c - 12, d - 13, e - 14 и f - 15.

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

Например:

1.53
32.24e-12	
  // Экспоненциальная форма записи литерала

Литералы с плавающей точкой могут использоваться для инициализации значений переменных вещественного типа ( float, double или long double ).

< Лекция 5 || Лекция 6: 123456 || Лекция 7 >
Александр Демьяненко
Александр Демьяненко

Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?

Максим Стогний
Максим Стогний

Добрый день!

Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами - членами класса, в примере объявления указателя на метод использовали в формальном описании оба названия:

тип_метода (имя_класса::*имя_метода_указателя)
    (список параметров);
тип_функции (*имя_ функции_указателя)
    (список параметров);

при этом можно было  тип_функции во втором описании заменить на тип_метода? Т.е.:

тип_метода (*имя_ метода_указателя)
    (список параметров);

Анатолий Гречман
Анатолий Гречман
Казахстан, Экибастуз, Экибастузский Инженерно-технический Институт, 2014
Berkut Molodoy
Berkut Molodoy
Россия