|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|||||||||||
Как отловить переполнение границ типа (INT)?23.02.2015, 04:07. Показов 31532. Ответов 69
Метки нет (Все метки)
Сразу напишу пример для наглядности:
И это лишь один момент из интересующих который выведет не верный результат... Ещё один:
Читал что некоторые создают особый тип (эквивалентный например 64 битному), т.к. границы будут дальше, то и результат можно будет сравнить полученное число с текущим, однако всё же границы останутся (теперь на пороге 64 битного числа), и подобный метод не подойдёт, т.к. за границы всё равно может выйти число. Так как в арифметических операциях предотвратить подобное? П.С. желательно чтоб примеры\инфа была бы применима в динамических переменных, т.е. на этап уже запуска без среды программирования. (собственно из уже получившейся программы)
0
|
|||||||||||
| 23.02.2015, 04:07 | |
|
Ответы с готовыми решениями:
69
отловить переполнение типа данных Как обойти переполнение int? Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 23.02.2015, 19:33 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||
| 23.02.2015, 20:20 | |||||||||||||
|
вопрос легко решается при помощи тех же лимитов, или использования тех же int64_t это - к слову о логике. Логика программы зависит только от программиста. для этого не нужно ничего менять в самом языке. и не нужно ради редкого юзкейса портить эффективность остальных 99,(9)% всех вычислений. Добавлено через 11 минут когда реально на практике использовал лимиты и проверку переполнений: вариантивный тип данных, специально разработанный для передачи данных по сети. умеет принимать любые типы данных, формируя таким образом динамические структуры любой сложности. пример:
При обратном извлечении числовых данных есть два режима: 1. Строгий. Вкладывали int, значит и забирать можно только как int 2. Не строгий. Забрать можно через какой угодно тип, если его размер способен вместить в себя данные. При нестрогом режиме циферку 10 можно забрать как int8_t, Данный юзкейс позволяет универсальным образом забирать данные из базы данные, какие бы они ни были. (любое количество столбцов любого типа) И пересылать их между серверами. При этом экономится объем передаваемых данных. Особенно это актуально для среднего размера баз данных. Их 64 битные айдишники вполне себе укладываются в какой нибудь 16 битный тип.
0
|
|||||||||||||
|
|
|||
| 23.02.2015, 20:28 | |||
|
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 23.02.2015, 20:39 | ||
|
Вот чем-то мне все эти "в C++ нет (подставить возможность)? Значит, не нужна" тот анекдот про коммунизм напоминают.
0
|
||
|
|
|
| 23.02.2015, 20:57 | |
|
Renji, мне твои суждения не очень понятны, говори "прямо".
hoggy, привет, давай "на ты". Мне интересен твой вариант как задача, и над ним стоит подумать, по этому сходу ответ не дам. На счёт ТС я уверен, что он не смог бы предоставить и такой вариант. Но это не значит, что его нельзя решить по-другому. Давай подумаем.
0
|
|
| 23.02.2015, 21:00 | |
|
Да не хочет ТС ассемблер. И думать не хочет. А хочет "чтобы попроще" за него все компилятор понаписал, и 100500 проверок в рантайме, чтобы на 0 делилось без еррора, за границы массива не залазилось, диапазоны типов не превышало... И чтобы еще само при этом знало как и когда надо сделать. Язык для обезьяны он хочет.
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 23.02.2015, 21:14 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 23.02.2015, 21:16 | |||||||
0
|
|||||||
| 23.02.2015, 21:21 | |
|
hoggy, делается за пару тактов предварительным чтением в широкий тип и накладыванием И с маской на якобы несуществующие биты, хоть по 5 или 7 бит принимай - никакие типы на границы проверять не надо, арифметики нет.
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|||||||||
| 23.02.2015, 21:21 [ТС] | |||||||||
|
Теперь по теме. Я думаю что такой пример будет более ярко выражать мою мысль:
Использовать int64 - значит считать числа в 64битном формате, а потом переводить в 32 с условием на лимит, только вот это уже 3 или 4 операции как минимум, в место одной, а это по моему накладно. Я пока что склоняюсь к варианту использования блоков try/catch/throw, но пока что ни одной мысли к данному способу не было озвучено и продемонстрировано.
0
|
|||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 23.02.2015, 21:29 | |
|
0
|
|
|
|
||
| 23.02.2015, 21:30 | ||
|
Поэтому повторяю еще раз: в языке C++ нет таких механизмов именно потому, что они там не нужны. hoggy, похоже, что мы говорим о разных "переполнениях".
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 23.02.2015, 21:31 | |
|
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 23.02.2015, 21:33 [ТС] | |
|
_Ivana, вася, холи вар устраиваеш. Так ещё и не правильно интерпритируеш мои мысли, в корне не правильно. Я не против ни первого, ни последнего, но выход за пределы языка, который используется должен быть оправдан, тут же ни кто ещё не предложил других вариантов.(вижу только асм и сравнение с 0 и начальным числом)
Этого мало, т.к. я в асм нуб, то для меня потенциальное использование асма является экстремумом, который желательно избежать. Почему - потому что если я что то не правильно напишу - последствия могут быть не предвиденными, насколько - даже представить трудно в виду не знания асма. Я не думаю что нет иных способов, предусмотренных стандартами языка или стандартными библиотеками которые могли бы помочь в решении. А тратить время(год, 2?) на изучение асма - не практично.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 23.02.2015, 21:34 | ||
|
0
|
||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|||
| 23.02.2015, 21:37 [ТС] | |||
|
Добавлено через 2 минуты
0
|
|||
|
|
|||
| 23.02.2015, 21:40 | |||
|
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 23.02.2015, 21:41 | ||
|
если нет - стало быть ничего оно вам не должно. вы похоже не осознаете последствий своих фантазий. механизм исключений использует медленно-медленную RTTI. то, что вы себе помыслили - не просто не эффективно, это - черезвычайно медленно. Более тормозного варианта себе придумать сложно. Уж лучше гнать int64_t во все поля не взирая на разрядную сетку машины.
0
|
||
| 23.02.2015, 21:41 | |
|
Передать массив элементов(типа int) объекта, в функцию из массивов(типа int) Как передать 0 в функцию типа f (int, int&) Значение типа int нельзя присвоить сущности типа int
Как сравнить переменную типа String с переменной типа Int? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|