मैं निम्नलिखित कार्यक्रम में आया, जो त्रुटियों या चेतावनियों के बिना संकलित है:
int main(){
<:]{%>; // smile!
}
कार्यक्रम क्या करता है, और वह स्माइली-एक्सप्रेशन क्या है?
मैं निम्नलिखित कार्यक्रम में आया, जो त्रुटियों या चेतावनियों के बिना संकलित है:
int main(){
<:]{%>; // smile!
}
कार्यक्रम क्या करता है, और वह स्माइली-एक्सप्रेशन क्या है?
जवाबों:
यह एक खाली लैम्बडा है जो एक डिगगेट भेस का उपयोग कर रहा है। सामान्य भेड़ के बच्चे की दाढ़ी नहीं होती है।
कार्यक्रम निम्नलिखित का प्रतिनिधित्व करने के लिए डिग्राफ का उपयोग करता है :
[] {};
यह एक लंबोदर अभिव्यक्ति है जो कुछ भी नहीं करता है। संबंधित प्रतीकों में ये समतुल्य हैं:
<: = [
%> = }
यद्यपि वे आम तौर पर आज के समय में अप्रभावित हैं, डिग्राफ तब उपयोगी होते हैं जब आपके कीबोर्ड में C ++ के मूल स्रोत वर्ण सेट का उपयोग करने के लिए आवश्यक कुछ कुंजियों का अभाव होता है, अर्थात् ग्राफिकल वाले। पात्रों का संयोजन जो एक डिग्राफ बनाते हैं, उन्हें एकल टोकन के रूप में संसाधित किया जाता है। यह बदले में किसी भी अपर्याप्त सुसज्जित कीबोर्ड या अन्य ऐसे हार्डवेयर या सॉफ्टवेयर के लिए बनाता है।
प्रोग्राम डिग्राफ का उपयोग कर रहा है , जो कीबोर्ड (या पाठ एन्कोडिंग) के साथ C ++ प्रोग्रामिंग की अनुमति देता है जिसमें उन वर्णों का उपयोग नहीं हो सकता है जो C ++ उपयोग करते हैं।
कोड इसका समाधान करता है:
int main(){
[]{}; // smile!
}
int main(){ <:]{%>; // smile! }
यह मूल रूप से एक है लैम्ब्डा अभिव्यक्ति (लैम्ब्डा अभिव्यक्ति में से एक है सी ++ 11 का उपयोग कर सुविधाओं) द्वि आलेख (दोनों द्वि आलेख और trigraphs सी पर काम करता है ++):
[] {};
केवल डिग्राफ का उपयोग करना:
<:]<%};
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;
उन्हें ट्रिग्राफ के साथ मिलाना:
<:??)<%??>; // popeye
??(:>{??>; // pirate