лекции программирование / polevoy_cpp_2012_spring_lecture_05
.pdfТипы с плавающей точкой
•float – одинарная точность
•double – двойная точность
•long double – расширенная точность
10.03.2010 |
cppNewb.ru |
41 |
Литералы с плавающей точкой
•‘.’ –разделитель
•F – суффикс float литерала
•L – суффикс long double литерала
пример:
12.5
3F
3.0L
1.23E-10
78.3E-1L
10.03.2010 |
cppNewb.ru |
42 |
Пустой тип (void)
void – в качестве возвращаемого значения, для указания, что функция ничего не возвращает
void* – указатель на объекты неизвестного типа
10.03.2010 |
cppNewb.ru |
43 |
Рекомендуемые типы
•bool
•char
•int
•double
10.03.2010 |
cppNewb.ru |
44 |
Выбор типа
•unsigned - массив битов
•signed – все остальное
•требуемая точность
•ограничения по использованию памяти
10.03.2010 |
cppNewb.ru |
45 |
Диапазоны арифметических типов
тип |
минимальный диапазон |
|
|
char |
[-128,127] или [0, 255] |
|
|
unsigned char |
[0, 255] |
|
|
signed char |
[-128, 127] |
|
|
int |
[-2^15, 2^15 - 1] |
|
|
unsigned int |
[0, 2^16] |
|
|
double |
10 значащих цифр |
|
|
wchar_t |
как unsigned int |
|
|
10.03.2010 |
cppNewb.ru |
46 |
Размеры арифметических типов
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
sizeof(float) <= sizeof(double) <= sizeof(long double)
sizeof(T) == sizeof(signed T) == sizeof(unsigned T)
10.03.2010 |
cppNewb.ru |
47 |
Неявные преобразования
•повышение
–bool -> int
–enum -> int или long
•обеспечение точности
–int + long
–int + double -> double
•усечение int n(f);
10.03.2010 |
cppNewb.ru |
48 |
Округление (примеры)
• до целого (с усечением)
пример:
int size(d);
• до ближайшего
пример:
int size(d + 0.5);
10.03.2010 |
cppNewb.ru |
49 |
Явные преобразования
static_cast<Тип>(выражение)
• преобразование родственных типов
пример:
int roundVal = static_cast<int>(doubleVal);
10.03.2010 |
cppNewb.ru |
50 |