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