Kompilator wyświetla symbol „pi” w przypadku błędu

103

Testowałem kod w Coliru i otrzymałem dziwny wynik. Przeszedłem przez kod i mogłem go odtworzyć za pomocą tego prostego fragmentu kodu :

int main()
{
    π
}

Wynik na g ++:

wyjście na g ++

szczęk:

wyjście na clang

Na przykład użycie just pi(bez address-of) pokazuje oczekiwany wynik:

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

Próbowałem odtworzyć to na moim komputerze, używając g ++ 4.9.2 i na innych stronach, ale nie mogłem.

Czy to jakiś błąd na tej stronie, jakaś konfiguracja tych kompilatorów?

I dlaczego tylko użycie operatora address-of ( &) pokazuje ten symbol?

hlscalon
źródło
23
Co się stanie, jeśli włożysz &tm;? Czy pojawia się ™? Jeśli tak, dane wyjściowe są interpretowane jako HTML.
tadman
13
@tadman Według tej witryny ™ nie ma kodu HTML „nazwy”, tylko kod numeru HTML: & # 8482; Daje to oczekiwany wynik .
simon
53
ahaha, to jest zabawne
Lightness Races in Orbit
4
@ Random832: To jest to, co otrzymuję za przeglądanie DOM, a nie przeglądanie źródła. (╯°□°)╯︵ ┻━┻
Wyścigi lekkości na orbicie
3
Dla przypomnienia, kilka osób, które tu komentowały, zna opiekuna Coliru. Jest teraz świadomy problemu. Dziękuję za podniesienie go.
Wyścigi lekkości na orbicie

Odpowiedzi:

114

Jest to błąd w witrynie, ponieważ dane wyjściowe kompilatora nie są odpowiednio chronione. Kompilator powinien wypisać π, ale to jest prawidłowy kod HTML, generujący widoczny symbol pi.

Szczeniak
źródło
czy możemy nagrać demo na żywo gdzieś na coliru, żeby to pokazać? : P
thecoshman
9
A dość często zapomniana ucieczka okazuje się problemem bezpieczeństwa. Dlatego zawsze, gdy się na to natknie, uprzejmie jest powiadomić o tym administratora witryny.
kasperd
50

πto kod html dla π. Wygląda na to, że ktoś zapomniał odpowiednio uciec.


źródło
8
700 i złotą odznakę. Naprawdę nieprzyjemne jest to, że ten facet mógł tego użyć znacznie częściej niż ja,
Puppy
3
@DavidRicherby - przedstawiciel jest przereklamowany i nie stawia jedzenia na stole.
dtech