Cita de: CooperJames en 15 Marzo 2015, 19:43 PM
¿Alguien puede explicar que ocurre aquí?
En realidad no funciona solo parece estar funcionado. La razón por la que esto sucede es probablemente debido a una optimización del compilador: al tratar de reducir los requisitos de memoria ya que las dos cadenas literales son idénticas, por lo que el compilador genera sólo una instancia de ellos y utiliza ese mismo puntero cada vez que se hace referencia a la cadena literal.
Eso es lo que parece suceder en su caso pero el resultado puede variar de compilador a compilador. No se puede confiar en esto, también mencionar que si dejas que el usuario ingrese las cadenas no se almacenaran en la misma dirección, por lo tanto su método no devolverá cero.