title: Non-static variable initialization
body: <p>I'm reading a book C progaming faq's.
  Here is passage of the book</p>
  
  <blockquote>
    <p>Automatic variables are variables defined inside a function or block
    of code without the static keyword. These variables have undefined
    values if you don’t explicitly initialize them. If you don’t
    initialize an automatic variable, you must make sure you assign to it
    before using the value.</p>
  </blockquote>
  
  <p>Here is my code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  int main (int argc, const char * argv[])
  {    
      {
          int x;
          printf("%d", x);
      }
  }
  </code></pre>
  
  <p>The result of <code>printf</code> is 0. Why is the variable initialized?</p>