エラー発生時にコンパイラーが「pi」記号を表示


103

Coliruでコードをテストしていたところ、奇妙な出力が得られました。私はコードを調べて、この簡単なコードでそれを再現することができました:

int main()
{
    π
}

g ++での出力:

g ++での出力

clang:

clangでの出力

たとえば、pi(アドレスなしで)だけを使用すると、期待される結果が表示されます。

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

自分のマシンでg ++ 4.9.2を使用して、他のサイトでこれを再現しようとしましたが、できませんでした。

これはこのサイトのバグですか、これらのコンパイラの設定ですか?

そしてなぜアドレス演算子(&)だけを使用するとこの記号が表示されるのですか?


23
入れたらどうなる&tm;?™が表示されますか?その場合、出力はHTMLとして解釈されます。
tadman 2015年

13
@tadmanこのサイトによれば、™にはHTMLの「名前」コードはなく、HTML番号コードのみがあります:™ これにより、期待される出力が得られます
サイモン2015年

53
これは陽気です
オービットのライトネスレース

4
@ Random832:これは、ソースを表示するのではなく、DOMを閲覧するために得られるものです。(╯°□°)╯︵ ┻━┻
オービットのライトネスレース2015年

3
ちなみに、ここでコメントした人の中には、Coliruのメンテナを知っている人もいます。彼は現在この問題を認識しています。上げてくれてありがとう。
オービットのライトネスレース2015年

回答:


114

コンパイラの出力が適切にエスケープされないため、これはサイトのバグです。コンパイラはを出力するはずπですが、これは有効なHTMLであり、表示されるpiシンボルを生成します。


これを示すために、colluのような場所でライブデモを行うことができますか?:P
thecoshman 2015年

9
そして、非常にしばしば忘れられたエスケープはセキュリティ問題であることが判明します。ですから、それに遭遇したときはいつでも、それについてサイト管理者に通知するのは礼儀正しいことです。
kasperd 2015年

50

πは、πのHTMLコードです。誰かが物事を適切にエスケープするのを忘れたようです。


8
700とゴールドバッジ。本当に不愉快なのは、この男が私よりもはるかにそれを使っていたかもしれないということです
Puppy

3
@DavidRicherby-担当者は過大評価されており、テーブルに食べ物を置きません。
dtech 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.