Re: Переповнення char'ів
Ні, не всюди, стандарт говорить, що діапазон char має бути,
як мінімум [-128,+127] але це implementation-defined, як і
те, що plain char може бути, як signed, так і unsigned.
В вашому випадку в циклі ви маєте UB, через переповнення
знакових.
І з неврахуванням цього пов'язаний один веселий баг, коли PCAD-200x (не пам'ятаю вже, у якому пофіксили) у кодуванні CP-1251 давав на схемах набрати літеру 'я', але потім не міг відкрити цей файл (збережений як PCAD-ASCII).
Десь воно char неявно приводило до int, з 'я' (0xFF) отримувало -1 і радісно порівнювало його з EOF.
Добрі люди місце знайшли і патчик зробили