Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
#1

Как программно определить диапазоны базовых типов? - C++

01.06.2009, 10:16. Просмотров 1565. Ответов 14
Метки нет (Все метки)

То есть, скажем, нужно определить максимальное и минимальное значение типа long double. Как это сделать программно? В стандартной библиотеке limits.h нет константы для long double.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2009, 10:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как программно определить диапазоны базовых типов? (C++):

Как программно определить режим сборки в VS ? - C++
Хотелось бы иметь что-то такое if (IsDebuggerPresent() == TRUE) std::cout << "Debug mode -> active\n"; else std::cout << "Release mode...

Как программно определить процесс запущенный в системе - C++
Собственно, я хочу что бы программа определяла запущен ли конкретный процесс в системе. Подскажите пожалуйста как это сделать.

Преобразования типов. Определить тип переменной - C++
Всем привет Недавно начал изучать язык C++ по книжке "Объектно-ориентированное программирование в C++" и там есть тема (Преобразование...

Определить наибольшее из 3 чисел для данных разных типов - C++
Напишите программу, которая позволяет определить наибольшее из 3 чисел для данных разных типов. Используйте template (C++)

Диапазоны значений перечислителей - C++
Доброго времени суток, уважаемые форумчане! Для чего нужны диапазоны значений перечислителей, если самим перечислителям соответствуют...

Для всех базовых типов определить размер в байтах - C (СИ)
Доброе всем времени суток. задали лабораторную на си++, но проблема в том что только первый год изучаем не могли бы помочь? вот сама...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17814 / 6024 / 388
Регистрация: 30.03.2009
Сообщений: 16,552
Записей в блоге: 26
01.06.2009, 10:18 #2
Посмотри в float.h
Должны быть макросы LDBL_MIN, LDBL_MAX
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.06.2009, 10:21 #3
подключаешь limits.h и там есть макросы..вот почитай

limits.h на wiki
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
01.06.2009, 10:29  [ТС] #4
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
подключаешь limits.h и там есть макросы..вот почитай

limits.h на wiki
Для long double не вижу?

И еще. У меня компилятор Visual C++ 6.0 для long и int, а так же для double и long double, отводит для первых по 4 байта, а для вторых по 8 байт. Чем они тогда различаются?
0
Evg
Эксперт CАвтор FAQ
17814 / 6024 / 388
Регистрация: 30.03.2009
Сообщений: 16,552
Записей в блоге: 26
01.06.2009, 10:29 #5
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
подключаешь limits.h и там есть макросы..вот почитай
В limits.h записаны только диапазоны для целочисленных типов. А для плавающих - в float.h
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
01.06.2009, 10:30  [ТС] #6
Увидел.
0
Evg
Эксперт CАвтор FAQ
17814 / 6024 / 388
Регистрация: 30.03.2009
Сообщений: 16,552
Записей в блоге: 26
01.06.2009, 10:30 #7
Цитата Сообщение от rar14 Посмотреть сообщение
Для long double не вижу?

И еще. У меня компилятор Visual C++ 6.0 для long и int, а так же для double и long double, отводит для первых по 4 байта, а для вторых по 8 байт. Чем они тогда различаются?
"Вторые" это double и long double? Если так, то твой компилятор фактически long double не поддерживает, т.е. делает его эквивалентным double'у
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
01.06.2009, 10:45  [ТС] #8
То есть чем различаются 4-х байтовые int и long??? Абсолютно одинаковые диапазоны!

Добавлено через 10 минут 47 секунд
Да. А программно вообще можно определить диапазон значений?
Ну для int можно так: (2 в 8 степени) в степени sizeof(int). А вот как для вещественных типов не пойму.

Добавлено через 3 минуты 11 секунд
Кстати, константы DBL_MAX и LDBL_MAX абсолютно одинаковые в моем компиляторе.
0
Evg
Эксперт CАвтор FAQ
17814 / 6024 / 388
Регистрация: 30.03.2009
Сообщений: 16,552
Записей в блоге: 26
01.06.2009, 10:56 #9
Цитата Сообщение от rar14 Посмотреть сообщение
То есть чем различаются 4-х байтовые int и long??? Абсолютно одинаковые диапазоны!
long обычно делают по размеру указателя. Т.е. на 32-битных системах размер long'а равен 4 байтам (и совпадает с int), а на 64-битных системах - 8 байт (и совпадает с long long)

Цитата Сообщение от rar14 Посмотреть сообщение
Ну для int можно так: (2 в 8 степени) в степени sizeof(int). А вот как для вещественных типов не пойму.
Для плавающего числа одного лишь размера типа недостаточно. Надо значть, сколько бит в этом типе отведено на мантиссу и сколько на экспоненту. В файле float.h есть описания этих размеров. Исходя из них можно вычислить диапазоны

Цитата Сообщение от rar14 Посмотреть сообщение
Кстати, константы DBL_MAX и LDBL_MAX абсолютно одинаковые в моем компиляторе.
Я же тебе написал, что твоя версия компилятора не поддерживает long double и трактует его как эквивалент double'а
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.06.2009, 11:24 #10
Цитата Сообщение от Evg Посмотреть сообщение
В limits.h записаны только диапазоны для целочисленных типов. А для плавающих - в float.h
не прочитал сообщение rar14) ответил на вопрос с названия темы)) float.h ты упомянул, я же для других базовых типов.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
01.06.2009, 11:47 #11
Да. А программно вообще можно определить диапазон значений?
Ну для int можно так: (2 в 8 степени) в степени sizeof(int). А вот как для вещественных типов не пойму.
у вещественных чисел есть две части мантисса и порядок, в универе даже заставляли переводить из двоичных и обратно вещественные числа
http://ru.wikipedia.org/wiki/Числа_с_плавающей_запятой
0
Evg
Эксперт CАвтор FAQ
17814 / 6024 / 388
Регистрация: 30.03.2009
Сообщений: 16,552
Записей в блоге: 26
01.06.2009, 12:19 #12
Цитата Сообщение от alex_x_x Посмотреть сообщение
у вещественных чисел есть две части мантисса и порядок, в универе даже заставляли переводить из двоичных и обратно вещественные числа
http://ru.wikipedia.org/wiki/Числа_с_плавающей_запятой
Скажем так, статья не на 100% корректно написана. Стандарт IEEE-774 и вправду определяет форматы чисел одинарной и двойной точности (для нас известных как float и double). Использование float'а и double'а даст одинаковый результат на всех архитектурах (всякие сигнальные процессоры и embedded системы не учитываю - они как правило работают в других стандартах).

Но для расширенной точности в табличке они нарисовали 10-байтное значение. Скажем так, это тот формат, который используется на intel'овской архитектуре (IEEE-854). На sparc'е например, формат long double'а отличается от intel'овского - он имеет размер 16 байт и более жлинную экспоненту (точно не уверен, но и мантисса вроде бы на 1 бит длиннее). Т.е. код с использованием long double не будет являться 100% переносимым между различными архитектурами
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
01.06.2009, 13:09 #13
Цитата Сообщение от rar14 Посмотреть сообщение
То есть, скажем, нужно определить максимальное и минимальное значение типа long double. Как это сделать программно? В стандартной библиотеке limits.h нет константы для long double.
limits.h она только для целочисленных типов, для вещественных есть float.h.

Добавлено через 1 минуту 0 секунд
Тьфу, сказали уже...
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
01.06.2009, 13:13 #14
Evg, я честно даже не вчитывался, собсно общие представления что такое вещественные числа статья дает, к тому же врятли автор будет писать для спарков) хотя, не знал
0
Evg
Эксперт CАвтор FAQ
17814 / 6024 / 388
Регистрация: 30.03.2009
Сообщений: 16,552
Записей в блоге: 26
01.06.2009, 13:31 #15
Цитата Сообщение от alex_x_x Посмотреть сообщение
к тому же врятли автор будет писать для спарков
Именно по этой причине я с нулевым доверием отношусь к статьям, авторы которых даже не подозревают, что кроме intel'а в мире есть ещё и другие архитектуры
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2009, 13:31
Привет! Вот еще темы с ответами:

Сравнение данных оболочек базовых типов - Java SE
Добрый день! Потихоньку занимаюсь изучением Java и натыкаюсь на некоторые странности. Не могли бы вы мне объяснит следующий момент. ...

Определить объект Range, содержащий несвязаные диапазоны - VBA
Доброго времени! Не нашла на форуме ничего по запросу "несвязаные диапазоны", поэтому пишу. Если что, тыкните в нужную тему плз. ...

Определить, попадают ли результаты анализов в заданные диапазоны или нет - VBA
Имеются данные цифровые на 2-ом и 3-ем листах... необходимо сравнить значения... если они выходят за пределы нормы... то пациент болен......

Получить из диапазона [А, D] N случайных чисел и определить количество попавших в диапазоны [A, B], [B, C], [C, D] - Turbo Pascal
REPEAT…UNTIL… Дано натуральные числа A, B, C, D такие, что A <B <C <D. Получить из диапазона N случайных чисел и определить количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.06.2009, 13:31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru