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?


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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.