На этом шаге мы рассмотрим пример использования класса numeric_limits.
Следующий пример демонстрирует использование числовых пределов. Он выводит максимальные возможные значения некоторых типов, а также проверяет, является ли тип char знаковым.
//--------------------------------------------------------------------------- #include <vcl.h> #include <iostream> #include <limits> #include <string> #include <conio.h> //необходимо для getch() #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused using namespace std; int main(int argc, char* argv[]) { // Использование текстового представления для bool cout << boolalpha; // Вывод максимальных значений для целочисленных типов cout << "max(short): " << numeric_limits<short>::max() << endl; cout << " max(int): " << numeric_limits<int>::max() << endl; cout << " max(long): " << numeric_limits<long>::max() << endl; cout << endl; // Вывод максимальных значений для вещественных типов cout << " max(float): " << numeric_limits<float>::max() << endl; cout << " max(double): " << numeric_limits<double>::max() << endl; cout << endl; // Проверяем, является ли тип char знаковым. cout << "is_signed(char): " << numeric_limits<char>::is_signed << endl; cout << endl; // Проверка наличия числовых пределов у типа string cout << "is_specialized(string): " << numeric_limits<string>::is_specialized << endl; getch(); return 0; } //---------------------------------------------------------------------------
Результат выполнения программы зависит от платформы. Один из возможных вариантов выглядит так:
Рис.1. Результат работы приложения
Последняя строка означает, что для типа string числовые пределы не поддерживаются. Впрочем, это вполне логично, поскольку строки не являются числовыми величинами. Однако приведенный пример наглядно показывает, что программист может обратиться с запросом к любому типу и узнать, поддерживает ли он числовые пределы.
Со следующего шага мы начнем рассматривать вспомогательные функции.