そうはならない。正確に展開してね。
というか、わざわざdo{}while()で囲んであるのに、更にそれをブロックで囲んだのは誰?

if(a < b)
{
  do
  {
    int temp = a;
    a = b;
    b = temp
  } while( 0 );
}; /* <- セミコロンが!*/
else
  a = b;