0 / 0 / 0
Регистрация: 30.10.2021
Сообщений: 4
|
|
1 | |
Обработка ошибок30.10.2021, 21:33. Показов 1458. Ответов 5
Всем привет! Столкнулся с такой проблемой, что нужно написать программу по сложению двух максимально больших чисел, но если они или их сумма выходит за границы int, то программа должна выводить сообщение об этом. Нашел в интернете информацию про обработку исключений, но не разобрался как использовать это, а конкретных примеров с границами int я не нашел. Буду очень благодарен, если поможете.
0
|
30.10.2021, 21:33 | |
Ответы с готовыми решениями:
5
Getopt. Обработка ошибок ввода параметров Обработка ошибок Обработка ошибок в go Обработка ошибок |
462 / 334 / 133
Регистрация: 18.07.2017
Сообщений: 1,476
|
|
30.10.2021, 23:03 | 2 |
Плохо искал. Примеры есть прямо на форуме.
А ты какие числа используешь? Для int нет никаких исключений: там просто происходит переполнение регистра. Но его можно проверить: 1) С помощью математики. Если верно неравенство: Где a и b - твои числа, c - максимальное значение int, то для них верно и следующее: Его и надо проверять. 2) При помощи ассемблера. У процессоров (x86 по крайней мере) есть регистр флагов. Когда процессор складывает два числа и происходит переполнение, он выставляет соответствующий флаг. Соответственно при помощи ассемблерной комманды можно проверить поднят ли флаг переполнения.
0
|
0 / 0 / 0
Регистрация: 30.10.2021
Сообщений: 4
|
|
30.10.2021, 23:25 [ТС] | 3 |
Я просто в этом еще прям совсем чайник, поэтому не понимаю, разве если мы введем допустим два числа по 10 миллиардов и используем данное неравенство, то оно сработает? Просто я пробовал сравнить каждое число с максимальным значением int и это не помогло. (Извините за глупые вопросы)
0
|
462 / 334 / 133
Регистрация: 18.07.2017
Сообщений: 1,476
|
|
31.10.2021, 00:25 | 4 |
А зачем я его тогда писал?
Желание понять - похвально, только даже на такие благостные порывы у нас не всегда есть время.
0
|
0 / 0 / 0
Регистрация: 30.10.2021
Сообщений: 4
|
|||||||||||
31.10.2021, 14:30 [ТС] | 5 | ||||||||||
Я знаю что я глупый, но что я делаю не так?)
Еще нашёл в интернете такое решение, но оно так же не помогло(
0
|
462 / 334 / 133
Регистрация: 18.07.2017
Сообщений: 1,476
|
|
31.10.2021, 17:43 | 6 |
У тебя MAX_INT + 1, оно не влазит в int.
https://ru.wikipedia.org/wiki/Limits.h Второе условие всегда ложное.
0
|
31.10.2021, 17:43 | |
31.10.2021, 17:43 | |
Помогаю со студенческими работами здесь
6
Обработка ошибок Обработка ошибок Обработка ошибок Обработка ошибок Обработка ошибок Обработка Ошибок обработка ошибок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |