2015-03-05 8 views
103

Testowałem kod na Coliru, a otrzymałem dziwne wyniki. Zeszłam kod i może odtworzyć je z tej prostej piece of code:Kompilator pokazujący symbol "pi" przy błędzie

int main() 
{ 
    π 
} 

Wyjście na g ++:

output on g++

dzyń:

output on clang

Na przykład, przy użyciu tylko pi (bez adresu-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 błąd na tej stronie, niektóre konfiguracje tych kompilatorów?

Dlaczego tylko za pomocą operatora adresu (&) pokazuje ten symbol?

+23

Co się stanie, jeśli wstawisz '&tm;'? Czy pojawiasz się ™? Jeśli tak, twoje dane wyjściowe są interpretowane jako HTML. – tadman

+12

@tadman Zgodnie z tym [witryna] (http://www.ascii.cl/htmlcodes.htm) ™ nie ma kodu "nazwa" HTML, tylko kod HTML: ™ Daje to oczekiwane [wyjście] (http://coliru.stacked-crooked.com/a/e4b5054d82c00595). – gurka

+52

ahaha to jest zabawne –

Odpowiedz

114

To błąd na stronie, ponieważ dane wyjściowe kompilatora nie zostały poprawnie usunięte. Kompilator powinien wypisać kod π, ale jest to poprawny kod HTML, generujący symbol pi, który widzisz.

+0

czy możemy uzyskać demo na żywo w innym miejscu, np. coliru, aby to pokazać? : P – thecoshman

+9

I dość często zapomniane ucieczki okazują się problemem bezpieczeństwa. Zawsze, gdy ktoś się z nią kontaktuje, uprzejmie jest powiadamiać o tym administratora witryny. – kasperd

51

π to kod html dla π. Wygląda na to, że ktoś zapomniał o właściwej ucieczce.

+19

... gdy 23 sekundy kosztuje 600+ powtórzeń ... –

+8

700 i złota odznaka. Co jest naprawdę nieprzyjemne, to, że ten facet mógł użyć tego o wiele bardziej niż ja, – Puppy

+3

@DavidRicherby - ryps jest przereklamowany i nie kładzie jedzenia na stole. – dtech