title: Does the statement `int val = (++i > ++j) ? ++i : ++j;` invoke undefined behavior?
body: <p>Given the following program:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  int main(void)
  {
      int i = 1, j = 2;
      int val = (++i &gt; ++j) ? ++i : ++j;
      printf("%d\n", val); // prints 4
      return 0;
  }
  </code></pre>
  
  <p>The initialization of <code>val</code> seems like it could be hiding some undefined behavior, but I don't see any point at which an object is either modified more than once or modified and used without a sequence point in between. Could someone 
  either correct or corroborate me on this?</p>