Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
29 / 23 / 2
Регистрация: 14.04.2009
Сообщений: 448

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

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

Студворк — интернет-сервис помощи студентам
То есть, скажем, нужно определить максимальное и минимальное значение типа long double. Как это сделать программно? В стандартной библиотеке limits.h нет константы для long double.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.06.2009, 10:16
Ответы с готовыми решениями:

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

Перегрузка операторов базовых типов
Привет. У меня появилась необходимость перегрузить вот такой вот оператор: public static bool operator ==(string str, (char, char) ch), но...

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

14
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.06.2009, 10:18
Посмотри в float.h
Должны быть макросы LDBL_MIN, LDBL_MAX
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
01.06.2009, 10:21
подключаешь limits.h и там есть макросы..вот почитай

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

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

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

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

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

Добавлено через 3 минуты 11 секунд
Кстати, константы DBL_MAX и LDBL_MAX абсолютно одинаковые в моем компиляторе.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.06.2009, 10:56
Цитата Сообщение от 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
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
01.06.2009, 11:24
Цитата Сообщение от Evg Посмотреть сообщение
В limits.h записаны только диапазоны для целочисленных типов. А для плавающих - в float.h
не прочитал сообщение rar14) ответил на вопрос с названия темы)) float.h ты упомянул, я же для других базовых типов.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
01.06.2009, 11:47
Да. А программно вообще можно определить диапазон значений?
Ну для int можно так: (2 в 8 степени) в степени sizeof(int). А вот как для вещественных типов не пойму.
у вещественных чисел есть две части мантисса и порядок, в универе даже заставляли переводить из двоичных и обратно вещественные числа
http://ru.wikipedia.org/wiki/Ч... ей_запятой
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.06.2009, 12:19
Цитата Сообщение от 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
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
01.06.2009, 13:09
Цитата Сообщение от rar14 Посмотреть сообщение
То есть, скажем, нужно определить максимальное и минимальное значение типа long double. Как это сделать программно? В стандартной библиотеке limits.h нет константы для long double.
limits.h она только для целочисленных типов, для вещественных есть float.h.

Добавлено через 1 минуту 0 секунд
Тьфу, сказали уже...
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
01.06.2009, 13:13
Evg, я честно даже не вчитывался, собсно общие представления что такое вещественные числа статья дает, к тому же врятли автор будет писать для спарков) хотя, не знал
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.06.2009, 13:31
Цитата Сообщение от alex_x_x Посмотреть сообщение
к тому же врятли автор будет писать для спарков
Именно по этой причине я с нулевым доверием отношусь к статьям, авторы которых даже не подозревают, что кроме intel'а в мире есть ещё и другие архитектуры
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2009, 13:31
Помогаю со студенческими работами здесь

Где создаются переменные базовых типов
Привет, я новичок. В Java, если я ничего не путаю, все объекты создаются только в динамической памяти: Person person1 = new...

Часто ли используется преобразования базовых типов данных в C#
Хотел бы узнать, какие типы чаще используются в программировании. Usaga, https://metanit.com/sharp/tutorial/2.2.php Про вот это...

Преобразования базовых типов данных для сложения элементов в массиве
Ребят подскажите пожалуйста как правильно преобразовать типы данных что бы складывались элементы массива. Module Module1 Sub...

Не посоветуете какое-нибудь железо для базовых или же чуть сверх базовых функций(бюджет 10 т р)
Здравствуйте. Можете подсказать бюджетные комплектующие для машины, от которой требуется только более-менее комфортная работа с...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru