"That’s a lot of trouble being caused by a two-line function. C may be a small language, but it’s not a simple one."
I disagree. C is very simple. You need to know C is not suppoused to work the same on platform and I guess behaviour you have tested is not defined by standard. I think every good C programmer know when he have to be causious because behaviour may be platform dependent. In matter of fact you did as well. I guess case you've studdied is not common to be used in real code. If so, there is very easy solution:
#if ((char)CHAR_MAX) + 1 > ((char)CHAR_MAX)
/* some code here */
#else
/* some code here */
#endif
There is no problem to me.