a+=1; /* equivalent to a=a+1; or a++; */ a*=2; /* equivalent to a=a*2; */ for( a=0, b=2; a<7; a++ ){ while( b<a*10 ) b*=2; if( b>50 ) break;} b es menor que 10 veces a (2<10), por lo que b se duplica ...a+=1; /* equivalent to a=a+1; or a++; */ a*=2; /* equivalent to a=a*2; */ for( a=0, b=2; a<7; a++ ){ while( b<a*10 ) b*=2; if( b>50 ) break;} b es menor que 10 veces a (2<10), por lo que b se duplica a 4. En la siguiente iteración tanto while () como if () se ignoran ya que b es menor que 10 veces a, así menor que 50. La ejecución recoge en la línea que sigue a la llave de cierre y todos terminamos con el bucle for () (no, a nunca llega a 7).