Сейчас я изучаю язык 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, но я был бы очень признателен за объяснение. Дело в ОС, компиляторе, дополнительной суперфиче скрытого языка?
Спасибо.