I don't have the full story, but the character input/output functions are older than the wide character input/output functions, prototypes havn't always been around, char promotes to int, the EOF value should be distinct from any character code, and so on. I guess the answer is somewhere in that area...