...
Note that in the UTF-16 character set, 0xFFFF is guaranteed not to be a character, which leaves room for WEOF to be chosen as the value −1. In 16-bit EUC (Extended UNIX Code), the high byte can never be 0xFF, so a conflict cannot occur at all. Similarly, all UTF-32 characters are positive when viewed as a signed 32-bit integer. Consequently, it would require a custom character set designed without consideration of the C programming language for this problem to occur with wide characters or with ordinary characters that are as wide as int.
See STR00-C. Represent characters using an appropriate type for more information on the proper use of character types.
...