title: Initializing a char array with an explicit size and initialized to bigger than the size
body: <p>I've been reading some code and I encountered the following:</p>
  
  <pre><code>int function(){
      char str[4] = "ABC\0";
      int number;
  
      /* .... */
  }
  </code></pre>
  
  <p>Normally, when you write a string literal to initialize a char array, the string should be null terminated implicitly right? What happens in this case? Does the compiler recognize the '\0' in the string literal and make that the null terminator? or does it overflow to the int number? Is there anything wrong with this form? </p>