For unsigned integer types in C, adding two unsigned values x and y, overflow occurred if the result is smaller than the operands x + y < x or x + y < y This is another example of how integer arithmetic for these data types is different from ordinary mathematical integer arithmetic. That is, the usual rules for < do not always hold for unsigned short integers. 0 < 65000 and 0 < 536, but 65000 + 536 < 65000 and 65000 + 536 < 536 since 65000 + 536 is 0 as unsigned short int type.