лучше не приучаться к фокусу: 1. / 2. или: 1. * a / b (где a, b - int) Можно попасться на не очень приятную ловушку. При некоторых настройках оптимизации компилятора, на этапе прекомпиляции проверяются числовые константы и эти 1. и 2. могут быть заменены на целые числа (для ускорения вычислений). В итоге результат будет не совсем ожидаемым. Правильней всегда явно указывать преобразование: (double)1 / 2 (double)a / b или еще лучше: (double)a / (double)b
Тимофей, я Вас искренне полюбил как преподавателя: во-первых, я просто восхищаюсь тем, как Вы увлечены своей работой/объяснением: к черту тряпочка для стирания! Когда идет поток мыслей, не до этих мелочей. Во-вторых, Вы меня просто "убили" на 5:45... когда максимально сконцентрирован и следишь Вашей мыслью и Вы говорите "получается забавная мордочка"... я не смог не оставить и не улыбнуться (читать "арнуть"). Вы очень искренний и непосредственный преподаватель. Огромное Вам спасибо за Ваш труд)). p.s. может я очень субъективен, но мне кажется, что курс "cs 50" от преподавателей гарвардской школы не идёт ни в какое сравнение с Вашим курсом, у Вас огромная концентрация мысли и она живая, что не может не очаровывать))
нет, будет выводиться остаток от деления, даже если он находится в дробной части. главное помнить что остаток от деления не будет работать с вещественными значениями, если я правильно помню, и работает только с целочисленным
вы в уроке "Переполнение и ошибки при работе с целыми типами в Си" говорили, что компилятор приводит вещественные числа к целым, а сейчас уже одного вещественного достаточно, где правда? Или присваивание и математические операции это две разных оперы?
Оказывается параноиком быть полезно!!!!!! Главное психом не стать!!!! double x = 1/2. ; Достаточно один раз точку поставить! один раз!!!!! один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!
НЕ ВВОДИТЕ В ЗАБЛУЖДЕНИЕ Во втором видео пишу, что знак остатка должен соответствовать знаку частного!!! ЭТО МОЁ УБЕЖДЕНИЕ! a=q*b+r, где r - это остаток, вроде все правильно, НО почему остаток всегда положителен?!?!?! q - частичное частное a - делимое, b - делитель a=c*b, a - делимое, b - делитель, c - частное, действительные числа то есть 10/3 = 3,(3) q = int(c) r = ( c - q )*b = c - int(c)*b, где int(c) - целая часть частного, соответствует частичному частному q r = [ a/b - int(a/b) ] * b, а значит, при отрицательном делимом 'a' и положительном 'b' целая часть от частного всегда будет меньше по модулю, чем вещественное деление, а разница будет соответствовать знаку делимого 'a'
Когда дело касается математики, не может быть субъективных убеждений. А остаток, с точки зрения математики, всегда положителен (информации в интернете достаточно, та же википедия). Не вводите в заблуждение читателей комментариев.
@@dowellkin ОСТАТОК всегда ПОЛОЖИТЕЛЕН только, только и только В НАТУРАЛЬНЫХ ЧИСЛАХ, а не в целых. в целых числах математика не рассматривает остаток. И поэтому в школе остатки учат до отрицательной абстракции
Благодарю Вас, Тимофей! Всё лаконично, доходчиво, качественно!
лучше не приучаться к фокусу:
1. / 2.
или:
1. * a / b (где a, b - int)
Можно попасться на не очень приятную ловушку. При некоторых настройках оптимизации компилятора, на этапе прекомпиляции проверяются числовые константы и эти 1. и 2. могут быть заменены на целые числа (для ускорения вычислений). В итоге результат будет не совсем ожидаемым.
Правильней всегда явно указывать преобразование:
(double)1 / 2
(double)a / b
или еще лучше:
(double)a / (double)b
чую clang ) там много багов с оптимизацией
1. / 2. это скорее как просто забавный фокус)
Очень классный курс. Большое спасибо!
Тимофей, я Вас искренне полюбил как преподавателя: во-первых, я просто восхищаюсь тем, как Вы увлечены своей работой/объяснением: к черту тряпочка для стирания! Когда идет поток мыслей, не до этих мелочей.
Во-вторых, Вы меня просто "убили" на 5:45... когда максимально сконцентрирован и следишь Вашей мыслью и Вы говорите "получается забавная мордочка"... я не смог не оставить и не улыбнуться (читать "арнуть"). Вы очень искренний и непосредственный преподаватель. Огромное Вам спасибо за Ваш труд)).
p.s. может я очень субъективен, но мне кажется, что курс "cs 50" от преподавателей гарвардской школы не идёт ни в какое сравнение с Вашим курсом, у Вас огромная концентрация мысли и она живая, что не может не очаровывать))
"а иногда быть параноиком - полезно". Надо запомнить))
А что будет если попытаться взять остаток от деления меньшего числа на большее, например 2%5 так? Также ноль?
нет, будет выводиться остаток от деления, даже если он находится в дробной части. главное помнить что остаток от деления не будет работать с вещественными значениями, если я правильно помню, и работает только с целочисленным
А почему компилятор 0.5 не округляет до 1?
Отбрасывает верхушку, не дотягивающую до целого. Он и 0.9 округлит до 0
вы в уроке "Переполнение и ошибки при работе с целыми типами в Си" говорили, что компилятор приводит вещественные числа к целым, а сейчас уже одного вещественного достаточно, где правда? Или присваивание и математические операции это две разных оперы?
хОРОШЕЕ ВИДЕО
я не понял в чем проблема с отрицательными числами.
Разберёшься раскажешь
@@MenteruOloma Так никакой проблемы нет, всё фиксится дополнительной проверкой x > 0, если число будет отрицательным цикл даже не запуститься
Оказывается параноиком быть полезно!!!!!! Главное психом не стать!!!! double x = 1/2. ; Достаточно один раз точку поставить! один раз!!!!! один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!один раз!!!!!
Был бы у меня такой препод, я бы не сваливал с универа
мужик
НЕ ВВОДИТЕ В ЗАБЛУЖДЕНИЕ
Во втором видео пишу, что знак остатка должен соответствовать знаку частного!!! ЭТО МОЁ УБЕЖДЕНИЕ!
a=q*b+r, где r - это остаток, вроде все правильно, НО почему остаток всегда положителен?!?!?!
q - частичное частное
a - делимое, b - делитель
a=c*b, a - делимое, b - делитель, c - частное, действительные числа
то есть 10/3 = 3,(3)
q = int(c)
r = ( c - q )*b = c - int(c)*b, где int(c) - целая часть частного, соответствует частичному частному q
r = [ a/b - int(a/b) ] * b, а значит, при отрицательном делимом 'a' и положительном 'b' целая часть от частного всегда будет меньше по модулю, чем вещественное деление, а разница будет соответствовать знаку делимого 'a'
Когда дело касается математики, не может быть субъективных убеждений. А остаток, с точки зрения математики, всегда положителен (информации в интернете достаточно, та же википедия). Не вводите в заблуждение читателей комментариев.
@@dowellkin ОСТАТОК всегда ПОЛОЖИТЕЛЕН только, только и только В НАТУРАЛЬНЫХ ЧИСЛАХ, а не в целых.
в целых числах математика не рассматривает остаток. И поэтому в школе остатки учат до отрицательной абстракции
@@Sergey-Primak есть вопрос, есть интернет, в чем проблема?
@@dowellkin интернет ошибается чаще всего. а вы можете искать истину в нем
@@Sergey-Primak этого ответа мне достаточно, чтобы оценить Вашу ограниченность. Нам больше не о чем говорить