View Single Post
Old 17-03-2007, 19:10   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Cittā: TO
Messaggi: 5206
Quote:
Originariamente inviato da mfonz85 Guarda i messaggi
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%)
andbin č offline   Rispondi citando il messaggio o parte di esso