El compilador muestra el símbolo 'pi' en caso de error


103

Estaba probando un código en Coliru y obtuve un resultado extraño. Bajé el código y pude reproducirlo con esta simple pieza de código :

int main()
{
    π
}

La salida en g ++:

salida en g ++

sonido metálico:

salida en clang

Por ejemplo, usar solo pi(sin la dirección de) muestra el resultado esperado:

main.cpp:3:5: error: 'pi' was not declared in this scope
    pi;
    ^

Intenté reproducir esto en mi máquina, usando g ++ 4.9.2 y en otros sitios, pero no pude.

¿Es esto algún error en este sitio, alguna configuración de estos compiladores?

¿Y por qué solo el operador de dirección de ( &) muestra este símbolo?


23
¿Qué pasa si lo pones &tm;? ¿Te aparece ™? Si es así, su salida se interpreta como HTML.
tadman

13
@tadman Según este sitio ™ no tiene un código de "nombre" HTML, solo un código de número HTML: & # 8482; Esto da el resultado esperado .
Simon

53
ahaha, esto es divertidísimo
Lightness Races in Orbit

4
@ Random832: Eso es lo que obtengo al navegar por el DOM en lugar de ver la fuente. (╯°□°)╯︵ ┻━┻
Lightness Races in Orbit

3
Para que conste, varias personas que han comentado aquí conocen al mantenedor de Coliru. Ahora es consciente del problema. Gracias por plantearlo.
Lightness Races in Orbit

Respuestas:


114

Es un error en el sitio, ya que la salida del compilador no se escapa correctamente. El compilador debería generar π, pero eso es HTML válido, produciendo el símbolo pi que ves.


¿Podemos obtener una demostración en vivo en algún lugar como Coliru para mostrar esto? : P
thecoshman

9
Y, con mucha frecuencia, el escape olvidado resulta ser un problema de seguridad. Por lo tanto, cada vez que uno lo encuentra, es de buena educación notificárselo al administrador del sitio.
kasperd

50

πes el código html para π. Parece que alguien se olvidó de escapar correctamente.


8
700 y una insignia de oro. Lo que es realmente desagradable es que este individuo podría haber utilizado ese mucho más que yo,
perrito del

3
@DavidRicherby: el representante está sobrevalorado y no pone comida en la mesa.
dtech
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.