Вход/Регистрация
Программирование. Принципы и практика использования C++ Исправленное издание
вернуться

Страуструп Бьерн

Шрифт:

// в памяти, выделенной для переменной

// типа short

i = i+1; // что, если число i станет максимальным?

long lg = i*i; // опасно: переменная типа long не может

// вместить результат

float fps = fpd; // опасно: большее число типа large может

// не поместиться в типе float

i = fpd; // усечение: например, 5.7 –> 5

fps = i; // можно потерять точность (при очень

// больших целых)

}

void g

{

char ch = 0;

for (int i = 0; i<500; ++i)

cout << int(ch++) << '\t';

}

Если сомневаетесь, поэкспериментируйте! Не следует отчаиваться и в то же время нельзя просто читать документацию. Без экспериментирования вы можете не понять содержание весьма сложной документации, связанной с числовыми типами.

ПОПРОБУЙТЕ

Выполните функцию

g
. Модифицируйте функцию
f
так, чтобы она выводила на печать переменные
c
,
s
,
i
и т.д. Протестируйте программу на разных значениях.

Представление целых чисел и их преобразование еще будет рассматриваться в разделе 25.5.3. По возможности ограничивайтесь немногими типами данных, чтобы минимизировать вероятность ошибок. Например, используя только тип
double
и избегая типа
float
, мы минимизируем вероятность возникновения проблем, связанных с преобразованием
double
—
float
. Например, мы предпочитаем использовать только типы
int
,
double
и
complex
(см. раздел 24.9) для вычислений,
char
— для символов и
bool
— для логических сущностей. Остальные арифметические типы мы используем только при крайней необходимости.

24.2.1. Пределы числовых диапазонов

Каждая реализация языка C++ определяет свойства встроенных типов в заголовках
<limits>
,
<climits>
и
<limits.h>
, чтобы программисты могли проверить пределы диапазонов, установить сигнальные метки и т.д. Эти значения перечислены в разделе Б.9.1. Они играют очень важную роль для создания низкоуровневых инструментов. Если они вам нужны, значит, вы работаете непосредственно с аппаратным обеспечением, хотя существуют и другие приложения. Например, довольно часто возникают вопросы о тонкостях реализации языка, например: “Насколько большим является тип
int
?” или “Имеет ли знак тип
char
?” Найти определенные и правильные ответы в системной документации бывает трудно, а в стандарте указаны только минимальные требования. Однако можно легко написать программу, находящую ответы на эти вопросы.

cout << "количество байтов в типе int: " << sizeof(int) << '\n';

cout << "наибольшее число типа int: " << INT_MAX << endl;

cout << "наименьшее число типа int: " << numeric_limits<int>::min

<< '\n';

if (numeric_limits<char>::is_signed)

cout << "тип char имеет знак n";

else

cout << "тип char не имеет знака\n";

cout << "char с минимальным значением: "

<< numeric_limits<char>::min <<'\n';

cout << "минимальное значение типа char: "

<< int(numeric_limits<char>::min) << '\n';

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

Эти пределы также могут быть полезными для выявления переполнения.

24.3. Массивы

Массив (array) — это последовательность, в которой доступ к каждому элементу осуществляется с помощью его индекса (позиции). Синонимом этого понятия является вектор (vector). В этом разделе мы уделим внимание многомерным массивам, элементами которых являются тоже массивы. Обычно многомерный массив называют матрицей (matrix). Разнообразие синонимов свидетельствует о популярности и полезности этого общего понятия. Стандартные классы

vector
(см. раздел Б.4),
array
(см. раздел 20.9), а также встроенный массив (см. раздел A.8.2) являются одномерными. А что если нам нужен двумерный массив (например, матрица)? А если нам нужны семь измерений? Проиллюстрировать одно- и двухмерные массивы можно так.

Массивы имеют фундаментальное значение в большинстве вычислений, связанных с так называемым “перемалыванием чисел” (“number crunching”). Наиболее интересные научные, технические, статистические и финансовые вычисления тесно связаны с массивами.

Часто говорят, что массив состоит из строки столбцов.

Столбец — это последовательность элементов, имеющих одинаковые первые координаты (х– координаты). Строка — это множество элементов, имеющих одинаковые вторые координаты (y– координаты).

  • Читать дальше
  • 1
  • ...
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: