Я работаю в коде C / C ++, который преобразует символ в его целочисленное значение, а затем должен напечатать его обратно в его значение.
Но, когда я пытаюсь напечатать "Extended ASCII"символ, использующий функцию printf, он показывает другой символ, и я не могу понять, в чем дело.
int charInt = (int) 'á'; // -31
char casted = (char) charInt;
printf("%c\n", casted); // ß
Если я отлаживаю код (я использую Visual Studio 2017), переменная ' casted 'показывает правильное значение' á 'в IntelliSense.
Я тестировал несколько разных способов печати этого символа, но он всегда дает один и тот же результат:
printf("test: %d\n", (signed char)'á'); // -31
printf("test: %d\n", (unsigned char)'á'); // 225
printf("test: %c\n", -31); // ß
printf("teste: %s\n", "á"); // ß
printf("test: %c\n", 225); // ß
printf("test: %d\n", 'á'); // -31
putc(-31, stdout); // ß
ЧтоЯ делаю не так?