Thanks for the reply.
Regarding your example code, understood, the code sample without the explicit cast was taken from the book (it was used as an example of where implicit conversion fails).
My point was simply that, why does it protect against overflow by placing the sum in a larger data type for bytes, yet does not do this for int32?
Actually, after thinking about this more, it is probably because for the byte type, C# does not by default check for overflows (therefore it stores their sum in a larger data type). C# allows you to add two int32s into an int32 data type because an overflow throws an exception. I guess the developer is responsible for handling possible run-time overflows.
int k = 2147483647;
throws an exception.
Am I barking up the right tree?