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

Exeption на переполнение int - C++

Восстановить пароль Регистрация
 
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
21.11.2014, 22:31     Exeption на переполнение int #1
как называется ексепшен который бы поймал эту ошибку?(переполнение int, типа если в переменную положится число больше чем 2 147 483 647 - ведь ет максимальный размер вроде переменной:?)) Если таков вообще есть
Знаю можно ловить все ошибки сразу типа catch(...) но мне надо то что выше описал или что-то типа того
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
21.11.2014, 22:35     Exeption на переполнение int #2
Нет такой ошибки. В int попадёт столько, сколько влезет.
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2908 / 1444 / 397
Регистрация: 18.10.2014
Сообщений: 2,662
21.11.2014, 22:45     Exeption на переполнение int #3
Цитата Сообщение от Lynatik001 Посмотреть сообщение
как называется ексепшен который бы поймал эту ошибку?
Никак.

* Если переполнение знакового целого типа возникает в процессе вычисления выражения, то поведение программы не определено.
* Если переполнение знакового целого типа возникает при приведении большего по диапазону целого типа к меньшему по диапазону, то поведение определяется реализацией.
* Беззнаковые целые типы не "переполняются" вообще, они реализуют арифметику "по модулю".

Более того, опираясь на вышеприведенные правила, современные компиляторы реализуют оптимизации, основанные на так называемой strict overflow semantics (строгая семантика переполнения). Согласно вышеприведенным правилам, компилятор имеет право полагать, что для знаковых целых типов из b>0 всегда следует a+b>a. Это значит, что компилятор имеет право заменить вот такой "хакерский" цикл

C++
1
2
for (int i = 0; i >= 0; ++i)
  // что-то
на бесконечный цикл

C++
1
2
for (int i = 0; ; ++i)
  // что-то
Другими словами, компиляторы имеют право оптимизировать код в рамках предположения, что целочисленные знаковые типа никогда не переполняются. Это означает, что все переполнения вы должны отлавливать самостоятельно.
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
21.11.2014, 22:56  [ТС]     Exeption на переполнение int #4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Никак.
понял.
у мну задание сделать событие на переполнение розрядной сетки. - это я ведь понял размер int ну в задании его надо использовать.
я так понял Просто делать проверку?
ли сума и введеные данные не больше 2 147 483 647, если больше вызивать событие?

Добавлено через 5 минут
кстати если пользователь введет число больше чем поместится в переменную каким експешеном его обработать
через
C#
1
int g = Convert.ToInt32(Console.ReadLine());
nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
21.11.2014, 22:59     Exeption на переполнение int #5
Ты можешь вызывать исключение в своём алгоритме типа overflow_error, но само оно не возникает.
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
21.11.2014, 23:03  [ТС]     Exeption на переполнение int #6
а тю компилятор мне сказал какой експепшен сам
System.OverflowException

Добавлено через 1 минуту
Цитата Сообщение от nmcf Посмотреть сообщение
Ты можешь вызывать исключение в своём алгоритме типа overflow_error, но само оно не возникает.
Возникает
C#
1
int g = Convert.ToInt32(Console.ReadLine());
и введи 333333333333333333333333333333333333333333333333333333333333333333333333
выведет что программа завершилась с вот таким ексепшеном)
поставил
C#
1
2
3
4
5
6
7
8
            try
            {
                int g = Convert.ToInt32(Console.ReadLine());
            }
            catch (System.OverflowException e)
            {
 
            }
Отлично его ловит
Ой пардон не в тот раздел написал походу C# ведь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2014, 08:49     Exeption на переполнение int
Еще ссылки по теме:

C++ Переполнение при вводе int
Как отловить переполнение границ типа (INT)? C++
C++ В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?

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

Или воспользуйтесь поиском по форуму:
nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
22.11.2014, 08:49     Exeption на переполнение int #7
В Builder и C# такое может и есть при преобразовании, но не при арифметических операциях.
Yandex
Объявления
22.11.2014, 08:49     Exeption на переполнение int
Ответ Создать тему
Опции темы

Текущее время: 08:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru