toupper

¿Por qué el alfabeto se divide en múltiples rangos en este código C?

En una biblioteca personalizada vi una implementación: inline int is_upper_alpha(char chValue) { if (((chValue >= 'A ... ndar de C/C++? inline int is_upper_alpha(char chValue) { return ((chValue >= 'A') && (chValue <= 'Z')); }

Necesito convertir a char sin signo antes de llamar a toupper(), tolower (), et al.?

Hace un tiempo, alguien con gran reputación aquí en StackOverflow escribió en un comentario que es necesario lanzar un char-a ... está cubierto por la respuesta de @Keith Thompson, todos tienen una representación positiva como signed char y unsigned char?