<?xml version="1.0"?>
<clause number="12.3.3.5" title="If statements">
  <paragraph>For an if statement stmt of the form: <code_example><![CDATA[
if (expr) then-stmt else else-stmt  
]]></code_example><list><list_item> v has the same definite assignment state at the beginning of expr as at the beginning of stmt. </list_item><list_item> If v is definitely assigned at the end of expr, then it is definitely assigned on the control flow transfer to then-stmt and to either else-stmt or to the end-point of stmt if there is no else clause. </list_item><list_item> If v has the state &quot;definitely assigned after true expression&quot; at the end of expr, then it is definitely assigned on the control flow transfer to then-stmt, and not definitely assigned on the control flow transfer to either else-stmt or to the end-point of stmt if there is no else clause. </list_item><list_item> If v has the state &quot;definitely assigned after false expression&quot; at the end of expr, then it is definitely assigned on the control flow transfer to else-stmt, and not definitely assigned on the control flow transfer to then-stmt. It is definitely assigned at the end-point of stmt if and only if it is definitely assigned at the end-point of then-stmt. </list_item><list_item> Otherwise, v is considered not definitely assigned on the control flow transfer to either the then-stmt or else-stmt, or to the end-point of stmt if there is no else clause. </list_item></list></paragraph>
</clause>
