title: Variable declarations following if statements
body: <p>An issue came up on another forum and I knew how to fix it, but it revealed a feature of the compiler peculiar to me. The person was getting the error "Embedded statement cannot be a declaration or labeled statement" because they had a declaration of a variable following an if statement with no brackets. That was not their intent, but they had commented out the line of code immediately following the if statement, which made the variable declaration the de facto line of code to execute. Anyway, that's the background, which brings me to this.</p>
  
  <p>The following code is illegal</p>
  
  <pre><code>if (true)
      int i = 7;
  </code></pre>
  
  <p>However, if you wrap that in brackets, it's all legal.</p>
  
  <pre><code>if (true)
  {
      int i = 7;
  }
  </code></pre>
  
  <p>Neither piece of code is useful. Yet the second one is OK. What specifically is the explanation for this behavior? </p>