2014-10-04 1 views
-2

Я пытаюсь напечатать символ ANSI размером более 127 с использованием символа unsigned. Проблема в том, что персонаж, который я получаю, ошибочен. Например, если я попытаюсь напечатать номер символа 161 (¡), я получу номер 237 (í). Зачем?Почему символы ANSI не работают после 127 в C даже при использовании «unsigned char»?

Да, извините. Итак, я использую CodeBlocks в Windows 8.1 64 бит. Это код:

unsigned char uc = 160; 
... 
printf("unsigned char considered': %c\n",uc); 
... 
+8

Какой набор символов? И как вы его печатаете? Кроме того, на какой системе? – Deduplicator

+0

Вы имеете в виду, что вы помещаете что-то вроде 'printf ("% d ", '¡')' в свой код? Это, в лучшем случае, даст некоторый непереносимый результат, определяемый реализацией. Вы не можете иметь символы, отличные от ASCII, в коде C. – 5gon12eder

+4

Отправьте код. Ваше описание слишком неоднозначно, чтобы объяснить, что вы на самом деле делаете. – AnT

ответ

0

Я думаю, что вы имеете в виду вы делаете это:

#include <stdio.h> 
int main() 
{ 
    unsigned char c = 160; 
    printf ("The character is %c\n",c); 
    return 0; 
} 

Как верхний бит набор символов работа зависит от эмуляции вашего терминала. Например, если у вас есть терминал UTF-8, он ожидает последовательности Unicode.

Смежные вопросы