Here are a couple of ways.
Code:
#include <stdio.h>
#include <limits.h>
void foo(unsigned char b, unsigned char c)
{
unsigned char a = b + c;
if ( a < c )
{
printf("overflow occurred, ");
}
printf("a = %d\n", a);
}
void bar(unsigned char b, unsigned char c)
{
unsigned char a = b + c;
if ( b > UCHAR_MAX - c )
{
printf("overflow occurred, ");
}
printf("a = %d\n", a);
}
int main(void)
{
foo(10, 10);
foo(UCHAR_MAX - 5, 10);
foo(10, UCHAR_MAX - 5);
foo(UCHAR_MAX - 5, UCHAR_MAX - 5);
bar(10, 10);
bar(UCHAR_MAX - 5, 10);
bar(10, UCHAR_MAX - 5);
bar(UCHAR_MAX - 5, UCHAR_MAX - 5);
return 0;
}
/* my output
a = 20
overflow occurred, a = 4
overflow occurred, a = 4
overflow occurred, a = 244
a = 20
overflow occurred, a = 4
overflow occurred, a = 4
overflow occurred, a = 244
*/