title: Is printing negative numbers as characters well-defined in C?
body: <p>For example, the following code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;limits.h&gt;
  
  int main(void)
  {
      char a;
      signed char b;
      for(a = CHAR_MIN, b = CHAR_MIN; a &lt; CHAR_MAX ; a++, b++ )
      printf("%c %c\n", a, b);
  }
  </code></pre>
  
  <p>outputs:</p>
  
  <pre><code>! !
  " "
  # #
  $ $
  % %
  &amp; &amp;
  ' '
  ( (
  ……
  </code></pre>
  
  <p>When <code>a</code> and <code>b</code> are negative, characters are still printed on the screen. I wonder whether this behaviour is well-defined?</p>
  
  <p>If so, is it defined by the standard or an specific implementation? And what's the point of defining such behaviour?</p>