Quote:
Originariamente inviato da mfonz85
Codice:
int isSumOverflow(int32_t a, int32_t b, int8_t bit) {
if(a < 0) a = abs(a);
if(b < 0) b = abs(b);
if(bit == 1) return a > 0 && b > 0 && b > (__MAX(int8_t) - a);
if(bit == 2) return a > 0 && b > 0 && b > (__MAX(int16_t) - a);
if(bit == 4) return a > 0 && b > 0 && b > (__MAX(int32_t) - a);
else return 0;
}
|
A dire il vero basta una banale macro:
#define IS_OVERFLOW(a,b,r) ((a) < 0 == (b) < 0 && (b) < 0 != (r) < 0)
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
|