2013-04-01 7 views
286

मैं निम्नलिखित कार्यक्रम है, जो त्रुटियों या यहाँ तक कि बिना चेतावनी के संकलित भर में आया था?क्या है?</p> <pre><code>int main(){ <:]{%>; // smile! } </code></pre> <p><a href="http://ideone.com/inXuVc">Live example.</a></p> <p>क्या कार्यक्रम क्या करता है, और कहा कि स्माइली अभिव्यक्ति क्या है:

+43

मैं एक बोनस के रूप में एक प्रोग्रामिंग वर्ग के लिए इन पंक्तियों के साथ कुछ दे दी है। मैं बुरा हूँ, मुझे पता है। यह Google पर बहुत अचूक है। – chris

+56

अच्छा circumlocution; मैंने सुना है कि वे आपको "अप्राप्य" कहने के लिए मुकदमा करते हैं। – matt

+3

@matt वे Sweeden पर मुकदमा दायर: http://www.bbc.com/news/magazine-21956743 – Edward

उत्तर

285

एक संयुक्ताक्षर भेस का उपयोग कर एक खाली लैम्ब्डा है यही कारण है कि। सामान्य भेड़ के बच्चे दाढ़ी नहीं है।

346

कार्यक्रम digraphs का उपयोग करता है निम्नलिखित प्रतिनिधित्व करने के लिए:

[] {}; 

यह एक लैम्ब्डा अभिव्यक्ति है कि कुछ नहीं करता है।

<: = [ 
%> = } 

हालांकि वे आम तौर पर आज अनावश्यक हैं, द्वि आलेख जब अपने कीबोर्ड निश्चित सी ++ के बुनियादी स्रोत वर्ण सेट, अर्थात् चित्रमय लोगों का उपयोग करने के लिए आवश्यक कुंजी का अभाव है के लिए उपयोगी होते हैं: इसी प्रतीकों इन समकक्ष है। एक डिग्राफ बनाने वाले पात्रों का संयोजन एक टोकन के रूप में संसाधित किया जाता है। यह बदले में अपर्याप्त रूप से सुसज्जित कीबोर्ड या ऐसे अन्य हार्डवेयर या सॉफ्टवेयर के लिए बनाता है।

60

प्रोग्राम digraphs का उपयोग कर रहा है, जो कुंजीपटल (या टेक्स्ट एन्कोडिंग) के साथ सी ++ प्रोग्रामिंग की अनुमति देता है जिसमें वर्ण C++ आमतौर पर उपयोग नहीं किए जा सकते हैं।

कोड इस पर ले कर जाता:

int main(){ 
    []{}; // smile! 
} 
55
int main(){ 
    <:]{%>; // smile! 
} 

यह मूल रूप से एक Lambda expressiondigraphs (दोनों द्वि आलेख और trigraphs सी पर काम करता है ++) का उपयोग करते हुए (लैम्ब्डा अभिव्यक्ति C++11 सुविधाओं में से एक है):

[] {}; 

केवल खुदाई का उपयोग करना raphs:

<:]<%}; 

<:]<%%>; 

[:>{%>; // like my cubic hat? 

[:><%}; 

[:><%%>; 

उन्हें Trigraphs साथ मिश्रण:

<:??)<%??>; // popeye 

??(:>{??>; // pirate 
संबंधित मुद्दे