Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.99/88: Рейтинг темы: голосов - 88, средняя оценка - 4.99
1 / 1 / 1
Регистрация: 04.05.2016
Сообщений: 266

Деление на 0

29.03.2018, 17:25. Показов 18820. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все говорят на 0 делить нельзя,но я поделил,в чем тут подвох
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main()
{
int x=1/(double)0;
cout<<x<<endl;
}
и получился результат -2147483648
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2018, 17:25
Ответы с готовыми решениями:

Задача про деление яблок (целочисленное деление)
Ребят,помогите с задачкой,как написать input.txt и output.txt? Помогите решить задачу. C++. Заранее спасибо! N школьников делят K яблок...

Умножение, деление и деление с остатком
Рассмотрим эти операции на примере. static void Main() { int i = 100, j = 15; double a = 14.2, b = 3.5; ...

Деление знаковых чисел с выводом ошибки "Деление на ноль"
Собственно поставили передо мной задачу - написать прогу деления двух чисел, причем что бы учитывался знак, и помимо всего прочего при...

33
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.03.2018, 21:11
Студворк — интернет-сервис помощи студентам
Нету такого типа "long long double". Есть "long long", и есть "long double". Что конкретно ты имел в виду?

C++
#include <iostream>
 
using namespace std;
 
int main()
{
long long x=1/(double)0;
cout<<x<<endl;
 
long double y=1/(double)0;
cout<<y<<endl;
}
Code
$ g++ t.cc
$ ./a.exe
-9223372036854775808
inf
Если приводить бесконечность к любому целочисленному типу, то очевидным образом будет undefined behavior, о котором я писал выше, но во что ты предпочёл не вникать. Если приводить бесконечность к любому вещественному типу, то получится бесконечность

Цитата Сообщение от viramir Посмотреть сообщение
результат всегда INT
Если под словом INT ты имел в виду "inf" в печати, то "inf" это и есть бесконечность (infinity по английски)
0
1 / 1 / 1
Регистрация: 04.05.2016
Сообщений: 266
29.03.2018, 21:12  [ТС]
Evg, перепутал long long int
и бесконечность я имел в виду
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
29.03.2018, 22:47
Evg уже все рассказал и показал. Добавлю только вырезку из Стандарта:
If the second operand of / or % is zero the behavior is undefined.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.03.2018, 23:12
Captain Maxee, видимо, это вырезка по части целочисленного деления. А тут речь идёт о вещественном делении
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
30.03.2018, 00:48
Evg, нет. Это касается и вещественного деления
1
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
30.03.2018, 04:04
Цитата Сообщение от Captain Maxee Посмотреть сообщение
Это касается и вещественного деления
Да не может такого быть!
А как же IEEE 754 ?
1
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
30.03.2018, 04:42
Цитата Сообщение от woldemas Посмотреть сообщение
А как же IEEE 754 ?
А кто дает гарантии, что именно это представление будет использоваться?
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
30.03.2018, 07:03
Цитата Сообщение от Captain Maxee Посмотреть сообщение
А кто дает гарантии, что именно это представление будет использоваться?
Да вроде как производители процессоров intel, AMD - вот эти ребята.
Хотя я не специалист, но во многих реальных программах связанных с вычислениями, вещественное деление на ноль используется, видел то ли в OpenCV, то ли в OpenCASCAD. Например, если в знаменателе разность вещественных чисел, а в числителе - ненулевое число, делят не проверяя, а результат используется для сравнения с каким-то значением, бесконечность всегда будет больше, минус бесконечность меньше.
1
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
30.03.2018, 08:40
Цитата Сообщение от woldemas Посмотреть сообщение
intel, AMD - вот эти ребята.
Что насчет ребят из IBM..?

Понимаете к чему я клоню? Очевидно, что большинство современных процессоров сейчас используют именно IEEE 754, но все же не все. Это не единственный стандарт представления вещественных чисел... существуют другие. Именно поэтому в Стандарте, что касается математических констант ( INFINITY или NAN, к примеру ), приставляется фраза «if available».
Я не хотел сейчас этим выпендриться. Я Вас уважаю. Просто поставил остальных в известность. Я считаю, что это полезная информация.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
30.03.2018, 09:14
Посмотрел в стандарт ISO/IEC 9899:1999, действительно в разделе 6.5.5 пункт 5 про деление говорится в целом, не разделяя на целочисленное и вещественное. Однако постфактум имеем то, что это является очередным местом, где в реальной жизни поведение в данном месте почти всегда можно считать вполне определённым. Постфактум на всех культурных процессорах вещественные вычисления работают в стандарте IEEE-754 в части float и double и в аналогичных по свойству стандартах для long double

Вырезку из стандарта, приведённую в посте #23, следует трактовать как общее замечание, напрямую не относящееся к данной теме. Просто об этом лучше писать явно, а то многие начинающие прочтут, не так поймут, и начнут делать очередные бредовые заявления типа того, что написано в посте #14

Несмотря на то, что все железки работают более-менее одинаково, мы всё равно имеем некие тонкие отличия, которые я описал в посте #13. В ситуациях, которые не покрыты стандартом IEEE-754 (или там обозначены как-нибудь со смыслом implementation defined) мы имеем различное поведение одного и того же кода на разных процессорах. Т.е. расслабляться раньше времени не следует. Лучше взять за правило и максимально избегать любой ситуации, не имеющей однозначной трактовки в стандарте Си
1
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
30.03.2018, 09:25
Цитата Сообщение от viramir Посмотреть сообщение
Все говорят на 0 делить нельзя,
"а я говорю что буду"(с)
Цитата Сообщение от viramir Посмотреть сообщение
и получился результат -2147483648
а в шестнадцатеричном виде ? 0xFFFFFFFF
это и есть INF для double, точнее часть его полный INF 0xFFFFFFFFFFFFFFFF
но все остальное уже сказали
Цитата Сообщение от viramir Посмотреть сообщение
C++
1
2
3
4
5
float f1 = 1.2345;
double f2 = 1.2345;
.....
  if (f1 == f2)
    printf ("equal\n");
а так
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
30.03.2018, 09:37
Цитата Сообщение от ValeryS Посмотреть сообщение
а в шестнадцатеричном виде ? 0xFFFFFFFF
Нет. 0x10000000

Не говоря уж о том, что на sparc'е совсем другое значение

Цитата Сообщение от ValeryS Посмотреть сообщение
это и есть INF для double, точнее часть его полный INF 0xFFFFFFFFFFFFFFFF
Нет. Результат преобразования из вещественного в целое вообще никак нельзя связывать с тем, как выглядеть битовый образ вещественного

Когда преобразуют из вещественного в целое, то если вещественное имеет значение больше, чем максимально возможное целое, то одно из решений - в качестве результата получить максимально возможное целое (это называется "преобразование с насыщением результата"). Именно по такой логике работает sparc'овская железка. Т.е. преобразование вещественной бесконечности в 32-битное целое даёт значение +2147483647. На интеле по каким-то своим внутренним соображениям результат получается на единицу больше, что превращается в -2147483648

Но ни то, ни другое, вообще никак не связаны с битовым представлением бесконечности, которое к тому же ты ещё и неправильно расписал. Бесконечность имеет все единички в экспоненте и все нули в мантиссе. Ну ещё знак. Т.е. double'овый +inf в битовом представлении выглядит как 0x7fff000000000000

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
а так
Очевидно, к делу не относится. Код из поста #15 является контрпримером

1
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
30.03.2018, 09:55
Цитата Сообщение от Evg Посмотреть сообщение
Очевидно, к делу не относится.
Ну я же смайлик поставил
Цитата Сообщение от Evg Посмотреть сообщение
Бесконечность имеет все единички в экспоненте и все нули в мантиссе.
спасибо, давно не заглядывал в документацию, помню только что невозможное число
0
Evg
30.03.2018, 15:07

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
Ну я же смайлик поставил
Да я понял, но написал на всякий случай (потому и в оффтоп). А то мало ли кто-то не поймёт и начнёт срач

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2018, 15:07

Деление на 3
35. Деление на 3. Как известно, число делится на 3 тогда и только тогда, когда сумма его цифр делится на 3. Проверить этот признак на...

Деление на 1
Здравствуйте! В программ есть операция которая делит числа на 1, чтобы найти частоту. Так вот, например, когда я делю 1/186 ответ выдает...

Деление
Оригинальное задание звучит так: Вот, что я наваял: //The program divides the first number by the second one. //It should...

Деление
Деление знаковых чисел, в результате почему-то 0 выскакивает( не могли бы вы найти ошибку? .model small .data input1 db...

Деление на 0
задача: Условие Имеется N человек и матрица А размера N´N. Элемент A матрицы равен 1, если человек i знаком с человеком j (если...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru