Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
47 / 39 / 15
Регистрация: 28.09.2012
Сообщений: 818
1

Exeption на переполнение int

21.11.2014, 22:31. Показов 3123. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как называется ексепшен который бы поймал эту ошибку?(переполнение int, типа если в переменную положится число больше чем 2 147 483 647 - ведь ет максимальный размер вроде переменной:?)) Если таков вообще есть
Знаю можно ловить все ошибки сразу типа catch(...) но мне надо то что выше описал или что-то типа того
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2014, 22:31
Ответы с готовыми решениями:

Проверить int на переполнение
Здорова! Нужно как то проверить int на переполнение. А я вообще не пойму, что понимается под...

Переполнение при вводе int
Такой вот вопросик. есть переменная а типа integer, пользователь вводит число с клавиатуры, так вот...

Переполнение целого в int и char
unsigned long l = ULONG_MAX; char c = -1; if (c == l) std::cout << "-1 = 4,294,967,295?";...

Как отловить переполнение границ типа (INT)?
Сразу напишу пример для наглядности: int fx = -2147483648 if(fx == -fx) { //ляляля } В...

6
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
21.11.2014, 22:35 2
Нет такой ошибки. В int попадёт столько, сколько влезет.
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
21.11.2014, 22:45 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)
  // что-то
Другими словами, компиляторы имеют право оптимизировать код в рамках предположения, что целочисленные знаковые типа никогда не переполняются. Это означает, что все переполнения вы должны отлавливать самостоятельно.
1
47 / 39 / 15
Регистрация: 28.09.2012
Сообщений: 818
21.11.2014, 22:56  [ТС] 4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Никак.
понял.
у мну задание сделать событие на переполнение розрядной сетки. - это я ведь понял размер int ну в задании его надо использовать.
я так понял Просто делать проверку?
ли сума и введеные данные не больше 2 147 483 647, если больше вызивать событие?

Добавлено через 5 минут
кстати если пользователь введет число больше чем поместится в переменную каким експешеном его обработать
через
C#
1
int g = Convert.ToInt32(Console.ReadLine());
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
21.11.2014, 22:59 5
Ты можешь вызывать исключение в своём алгоритме типа overflow_error, но само оно не возникает.
0
47 / 39 / 15
Регистрация: 28.09.2012
Сообщений: 818
21.11.2014, 23:03  [ТС] 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# ведь
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
22.11.2014, 08:49 7
В Builder и C# такое может и есть при преобразовании, но не при арифметических операциях.
0
22.11.2014, 08:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2014, 08:49
Помогаю со студенческими работами здесь

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H ...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?
Не понимаю, с чего начинать. Заранее спс.

Что означает ошибка too few arguments to function ‘int my_func(int, int)’ (язык C++)?
В чём проблема? #include &lt;iostream&gt; int my_func (int i, int j){ int z; z=i+j; return...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru