¿Retorno de carro en C?

La salida del siguiente progtwig es: hai

No entendí cómo funciona el retorno de carro en este progtwig y, de verdad, ¿alguien puede ayudarme?

 #include  #include void main() { printf("\nab"); printf("\bsi"); printf("\rha"); _getch(); } 

Desde 5.2.2 / 2 (semántica de visualización de caracteres):

\b ( retroceso ) Mueve la posición activa a la posición anterior en la línea actual. Si la posición activa está en la posición inicial de una línea, el comportamiento del dispositivo de visualización no está especificado.

\n ( nueva línea ) Mueve la posición activa a la posición inicial de la siguiente línea.

\r ( retorno de carro ) Mueve la posición activa a la posición inicial de la línea actual.

Aquí, su código produce:

  • ab
  • \b : retrocede un caracter
  • escriba si : anula la b con s (produciendo asi en la segunda línea)
  • \r : volver al principio de la línea actual
  • write ha : anula los dos primeros caracteres (produciendo hai en la segunda línea)

Al final, la salida es:

 \nhai 

El progtwig imprime ab , retrocede un carácter e imprime sobreescribiendo el b resultante asi . El retorno de carro devuelve el cursor a la primera columna de la línea actual. Eso significa que la ha se imprimirá as y el resultado es hai

Paso a paso:

[nueva línea] ab

 ab 

[retroceso] si

 asi 

[retorno de carro] ha

 hai 

Retorno de carro, no provoca una nueva línea. En algunas circunstancias, un solo CR o LF se puede traducir a un par CR-LF. Esto depende de la consola y / o la secuencia.