คอมไพเลอร์แสดงสัญลักษณ์ 'pi' เมื่อเกิดข้อผิดพลาด


103

ฉันกำลังทดสอบโค้ดบางอย่างในColiruและได้ผลลัพธ์แปลก ๆ ฉันลงโค้ดและสามารถสร้างซ้ำได้ด้วยโค้ดง่ายๆนี้:

int main()
{
    π
}

ผลลัพธ์บน g ++:

เอาต์พุตบน g ++

เสียงดัง:

เอาท์พุทเสียงดัง

ตัวอย่างเช่นการใช้เพียงpi(ไม่มีที่อยู่ของ) จะแสดงผลลัพธ์ที่คาดหวัง:

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

ฉันพยายามทำซ้ำสิ่งนี้บนเครื่องของฉันโดยใช้ g ++ 4.9.2 และในไซต์อื่น ๆ แต่ไม่สามารถทำได้

นี่คือข้อบกพร่องบางอย่างบนไซต์นี้การกำหนดค่าบางอย่างของคอมไพเลอร์เหล่านี้หรือไม่

แล้วทำไมใช้เฉพาะ address-of operator ( &) เท่านั้นที่แสดงสัญลักษณ์นี้?


23
จะเกิดอะไรขึ้นถ้าคุณใส่เข้าไป&tm;? คุณได้รับการแสดงขึ้นมา? หากเป็นเช่นนั้นผลลัพธ์ของคุณจะถูกตีความเป็น HTML
tadman

13
@tadman ตามไซต์นี้™ไม่มีรหัส "ชื่อ" HTML เพียงแค่รหัสตัวเลข HTML: & # 8482; นี้จะช่วยให้คาดว่าการส่งออก
ไซมอน

53
ahaha นี่มันฮา
Lightness Races in Orbit

4
@ Random832: นั่นคือสิ่งที่ฉันได้รับจากการเรียกดู DOM แทนที่จะดูแหล่งที่มา (╯°□°)╯︵ ┻━┻
Lightness Races ใน Orbit

3
สำหรับบันทึกหลายคนที่แสดงความคิดเห็นที่นี่รู้จักผู้ดูแล Coliru ตอนนี้เขารับทราบปัญหาแล้ว ขอบคุณที่เลี้ยงค่ะ
Lightness Races ใน Orbit

คำตอบ:


114

เป็นจุดบกพร่องบนไซต์เนื่องจากเอาต์พุตของคอมไพเลอร์ไม่ได้รับการหลีกเลี่ยงอย่างถูกต้อง คอมไพเลอร์ควรส่งออกπแต่เป็น HTML ที่ถูกต้องโดยสร้างสัญลักษณ์ pi ที่คุณเห็น


เราสามารถรับการสาธิตสดในที่ไหนสักแห่งเช่น coliru เพื่อแสดงสิ่งนี้ได้หรือไม่? : P
thecoshman

9
และบ่อยครั้งที่การหลบหนีที่ถูกลืมกลายเป็นปัญหาด้านความปลอดภัย ดังนั้นเมื่อใดก็ตามที่พบปัญหาดังกล่าวควรแจ้งให้ผู้ดูแลระบบทราบอย่างสุภาพ
kasperd

50

πคือรหัส html สำหรับπ ดูเหมือนว่าใครบางคนลืมที่จะหลบหนีสิ่งต่างๆอย่างถูกต้อง


8
700 และตราทอง สิ่งที่ไม่พึงประสงค์จริงๆคือผู้ชายคนนี้สามารถใช้สิ่งนั้นได้มากกว่าฉัน
ลูกสุนัข

3
@DavidRicherby - ตัวแทนพูดเกินจริงและไม่วางอาหารบนโต๊ะ
dtech
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.