\n
es un carácter de avance de línea (LF), código de carácter 10. \r
es un carácter de retorno de carro (CR), código de carácter 13. Lo que hacen difiere de un sistema a otro. En Windows, por ejemplo, las líneas en los archivos de texto se terminan usando CR seguido de inmediato por LF (por ejemplo, CRLF). En los sistemas Unix y sus derivados, solo se usa LF. (Mac antes de Mac OS X usaba CR, pero Mac OS X es un derivado * nix y así usa LF.)
En los viejos tiempos, LF literalmente hacía solo una línea de alimentación en impresoras (moviéndose por una línea sin moverse donde está horizontalmente en la página), y CR se movió de nuevo al principio de la línea sin moviendo el papel hacia arriba, de ahí que algunos sistemas (como Windows) envíen CR (retorno al lado izquierdo) y LF (y alimentar el papel).
Debido a toda esta confusión, algunos objetivos de salida aceptarán secuencias de salto de línea múltiples, por lo que puede ver el mismo efecto de cualquiera de los caracteres dependiendo de lo que está produciendo.
@ T.J.Crowder: ¿Le importa [edit] ing hacer esa distinción más clara? – Will
@Will: pensé que estaba perfectamente claro en primer lugar, pero aparentemente no me dieron los votos cercanos. :-) He agregado una posdata. –