title: Unicode stored in C char
body: <p>I'm learning the C language on Linux now and I've came across a little weird situation.</p>
  
  <p>As far as I know, the standard C's <code>char</code> data type is ASCII, 1 byte (8 bits). It should mean, that it can hold only ASCII characters.</p>
  
  <p>In my program I use <code>char input[]</code>, which is filled by <code>getchar</code> function like this pseudocode:</p>
  
  <pre><code>char input[20];
  int z, i;
  for(i = 0; i &lt; 20; i++)
  {
     z = getchar();
     input[i] = z;
  }
  </code></pre>
  
  <p>The weird thing is that it works not only for ASCII characters, but for any character I imagine, such as <code>@&amp;@{čřžŧ¶'`[łĐŧđĐ¶←^€~[←^ø{&amp;}čž</code> on the input.</p>
  
  <p>My question is - how is it possible? It seems to be one of many beautiful exceptions in C, but I would really appreciate explanation. Is it a matter of OS, compiler, hidden language's additional super-feature?</p>
  
  <p>Thanks.</p>