Currently, when the size of a variable is changed, any
comparisons with INT_MAX, CHAR_MAX and so on have to be manually adjusted.
While these hardcoded values have some portability as they map to
machine-specific values, the case of changing the type of a variable is
not covered.
This provides a (semi) portable way of determining the maximum value
a variable of a given size can hold.
The assumption is to run on a 8-bit per byte architecture, and it will
not work for bit-fields.
Other than this, the entire range of UCHAR_MAX, UINT_MAX, USHRT_MAX,
ULONG_MAX, ULLONG_MAX could be replaced with UTYPE_MAX(variable)