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

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

Войти
Регистрация
Восстановить пароль
 
Lynatik001
38 / 32 / 4
Регистрация: 28.09.2012
Сообщений: 620
#1

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

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

как называется ексепшен который бы поймал эту ошибку?(переполнение int, типа если в переменную положится число больше чем 2 147 483 647 - ведь ет максимальный размер вроде переменной:?)) Если таков вообще есть
Знаю можно ловить все ошибки сразу типа catch(...) но мне надо то что выше описал или что-то типа того
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 22:31     Exeption на переполнение int
Посмотрите здесь:

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

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

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

Access violation writing exeption - C++
Добрый день! Почему такой код вызывает Access violation writing exeption ? char *str = "Hello"; char *p = str; *p = 'W';

Ошибка:unresolved external 'My<int>::My<int>(int)' unresolved external 'My<int>::~My<int>' - C++
есть 3 файла. файл inc.h: ... template &lt;class T&gt; class My { int m_size; T *m_data; public: My(int value); ~My(); ...

Работа с массивом - Invalid types 'int[int]' for array subscript - C++
Добрый день. Данный код выдает ошибку invalid types 'int' for array subscript в функции в строке cout &lt;&lt;dm; Не понимаю в чем ошибка....

Правильное объявление переменной с точки зрения стиля [int *a vs int* a] - C++
И всё таки, как корректней объявлять переменные? 1. int* a, int&amp; a, int** a или 2. int *a, int &amp;a, int **a ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5101 / 4421 / 1471
Регистрация: 14.04.2014
Сообщений: 17,519
21.11.2014, 22:35     Exeption на переполнение int #2
Нет такой ошибки. В int попадёт столько, сколько влезет.
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3635 / 1910 / 503
Регистрация: 18.10.2014
Сообщений: 3,476
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
38 / 32 / 4
Регистрация: 28.09.2012
Сообщений: 620
21.11.2014, 22:56  [ТС]     Exeption на переполнение int #4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Никак.
понял.
у мну задание сделать событие на переполнение розрядной сетки. - это я ведь понял размер int ну в задании его надо использовать.
я так понял Просто делать проверку?
ли сума и введеные данные не больше 2 147 483 647, если больше вызивать событие?

Добавлено через 5 минут
кстати если пользователь введет число больше чем поместится в переменную каким експешеном его обработать
через
C#
1
int g = Convert.ToInt32(Console.ReadLine());
nmcf
5101 / 4421 / 1471
Регистрация: 14.04.2014
Сообщений: 17,519
21.11.2014, 22:59     Exeption на переполнение int #5
Ты можешь вызывать исключение в своём алгоритме типа overflow_error, но само оно не возникает.
Lynatik001
38 / 32 / 4
Регистрация: 28.09.2012
Сообщений: 620
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
Еще ссылки по теме:

Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; struct point { int x,y,z; }; double dlina(point a,point b) { ...

error C2664: InputMatrixCurrent: невозможно преобразовать параметр 1 из 'int [5][5]' в 'int' - C++
Помогите поправить код, а то выдаёт ошибки #include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; void...

выдаёт error C2440: =: невозможно преобразовать 'int' в 'int [100] - C++
Ввести информацию об абонентах телефонной станции: фамилия, телефон, улица. Распечатать список абонентов 65-й АТС, проживающих на улице...

Ошибка error C2440: инициализация: невозможно преобразовать 'int' в 'int []' - C++
// ConsoleApplication9.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Преобразовать int в const int для установки размера массива - C++
Добрый вечер всем! Столкнулся с такой нестандартной проблемой. Нужно преобразовать значения типа int в const int, чтоб константная...


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

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

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