У меня есть две интегральные переменные a
и b
и константа s
соответственно. d
. Мне нужно вычислить значение (a*b)>>s
соответственно. a*b/d
. Проблема состоит в том, что умножение может переполняться, и конечный результат будет неправильным, хотя a*b/d
может вписываться в заданный интегральный тип.
Как это можно было бы эффективно решить? Прямым решением является расширение переменной a
или b
до более крупного интегрального типа, но не может быть более крупного интегрального типа. Есть ли лучший способ решить проблему?