Это недавно появилось в интервью (концепция), и сегодня я обсуждал это с другом. Вот идея:
Предположим, вы вычисляете скалярное произведение трехмерного вектора. Простая функция: «return (x1 * x2) + (y1 * y2) + (z1 * z2)».
Однако, если первое и второе слагаемые являются большими положительными числами, они могут переполниться, даже если они ответят в пределах допустимого диапазона. Например, допустим, что целочисленный предел равен 128. 100 + 100 - 80 = 120, но если вы сделаете первые два добавления первыми, вы переполнитесь.
В университетском классе это было сделано для задания на С, где мы вычисляли то, что мы, вероятно, делали тысячу раз раньше, но никогда не обращали внимания на переполнение (это была часть, когда мы учились писать санитарный кодекс) как взятие среднего или что-то в этом роде.
Кто-нибудь знает, в каком контексте это могло произойти? Я знаю, что в какой-то ситуации вам приходилось использовать сравнения до или вместо сложения / вычитания, чтобы избежать этого переполнения