Re[4]: integer overflow
От: quodum  
Дата: 24.05.11 13:39
Оценка:
Здравствуйте, 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: верно только для беззнаковых типов

С умножением уже сложнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.