Challenge 2: unsigned char Overflow — Possible Solution ==================================================================== #include int main() { unsigned char c = 255; c = c + 1; printf("%d\n", c); return 0; } Output: 0 Explanation: an unsigned char can represent 0 through 255 (2^8 - 1). 255 is the maximum representable value, so adding 1 has nowhere to go within that range -- per the chapter, unsigned integer overflow in C is well-defined: it WRAPS AROUND, computing the result modulo 2^(number of bits). 255 + 1 = 256, and 256 mod 256 = 0, so c becomes 0. This is not a bug or an error -- it's guaranteed, specified behavior that any standard-conforming C compiler must produce identically, every time, on every platform. It's the exact well-defined counterpart the chapter contrasts against signed overflow, which has no such guarantee at all. WHY THIS WORKS AS AN ANSWER ------------------------------ This correctly computes the wraparound result (0, via modulo arithmetic) and explains WHY it's well-defined rather than a bug -- unsigned overflow is specified by the standard to wrap, unlike signed overflow's undefined behavior, which is exactly the asymmetry the chapter's warn-box highlights.