Компилятор показывает символ «пи» при ошибке


103

Я тестировал код на Coliru и получил странный результат. Я просмотрел код и смог воспроизвести его с помощью этого простого фрагмента кода :

int main()
{
    π
}

Вывод на g ++:

вывод на g ++

лязг:

вывод на лязг

Например, использование только pi(без адреса) показывает ожидаемый результат:

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

Я пытался воспроизвести это на своей машине, используя g ++ 4.9.2 и другие сайты, но не смог.

Это какая-то ошибка на сайте, какой-то конфиг этих компиляторов?

И почему только при использовании оператора адресации ( &) этот символ отображается?


23
Что будет, если вставить &tm;? У тебя появляется ™? Если это так, ваш вывод интерпретируется как HTML.
tadman 05

13
@tadman Согласно этому сайту ™ не имеет " именного " кода HTML, только числовой код HTML: & # 8482; Это дает ожидаемый результат .
Саймон

53
ахаха, это весело
Lightness Races на орбите

4
@ Random832: Это то, что я получаю за просмотр DOM, а не за просмотр исходного кода. (╯°□°)╯︵ ┻━┻
Гонки легкости на орбите

3
Для записи, несколько человек, которые оставляли здесь комментарии, знают сопровождающего Coliru. Теперь он знает об этой проблеме. Спасибо, что подняли его.
Гонки легкости на орбите

Ответы:


114

Это ошибка на сайте, так как вывод компилятора не экранирован должным образом. Компилятор должен выводить π, но это действительный HTML, создавая символ пи, который вы видите.


можем ли мы получить живую демонстрацию где-нибудь вроде coliru, чтобы показать это? : P
thecoshman 06

9
И довольно часто забытый побег оказывается проблемой безопасности. Поэтому всякий раз, когда кто-то сталкивается с этим, вежливо уведомить об этом администратора сайта.
kasperd 06

50

π- это html-код для π. Похоже, кто-то забыл как следует убежать от вещей.


8
700 и золотой значок. Что действительно неприятно, так это то, что этот парень мог использовать это намного больше, чем я,
Щенок,

3
@DavidRicherby - репутация переоценена и не ставит еду на стол.
dtech
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.