Здравствуйте, B0FEE664, Вы писали:
BFE>Мне тоже интересен этот вопрос.
BFE>Понятно, что не обязательно иметь тип с удвоенной разрядностью. Можно делать что-то вроде такого:
BFE>[ccode]
BFE>unsigned int a = ...;
BFE>unsigned int b = ...;
BFE>...
BFE>unsigned int a_half = a / 2;
BFE>unsigned int b_half = b / 2;
BFE>unsigned int max_half = UINT_MAX / 2;
BFE>unsigned int AplusB = 0;
BFE>А как правильно ?
При сложении элементарно:
if ( a + b < a )
{
// overflow!
}
NB: верно только для беззнаковых типов
С умножением уже сложнее.