Unicode хранится в C char

Сейчас я изучаю язык C в Linux и столкнулся с немного странной ситуацией.

Насколько я знаю, стандартный тип данных C char— это ASCII, 1 байт (8 бит). Это должно означать, что он может содержать только символы ASCII.

В своей программе я использую char input[], который заполняется функцией getcharнаподобие этого псевдокода:

char input[20];
int z, i;
for(i = 0; i < 20; i++)
{
   z = getchar();
   input[i] = z;
}

Странно то, что он работает не только для символов ASCII. , но для любого символа, который я себе представляю, например @&@{čřžŧ¶'`[łĐŧđж ←^€~[ ←^ø{&}čžна входе.

Мой вопрос - как это возможно? Кажется, это одно из многих красивых исключений в C, но я был бы очень признателен за объяснение. Дело в ОС, компиляторе, дополнительной суперфиче скрытого языка?

Спасибо.

18
задан Derek 朕會功夫 12 September 2015 в 21:33
поделиться