यह एक जीसीसी विस्तार नाम से है।
यह मानक c.Using -pedantic
संकलन के लिए ध्वज आपको बताएगा।
एक सशर्त अभिव्यक्ति में मध्य संचालन छोड़ा जा सकता है। फिर यदि पहला ऑपरेंड nonzero है, तो इसका मान सशर्त अभिव्यक्ति का मूल्य है।
इसलिए, अभिव्यक्ति
x ? : y
कि अगर अशून्य है x का मान है; अन्यथा, वाई का मूल्य।
यह उदाहरण पूरी तरह से
x ? x : y
इस सरल मामले में के बराबर है, मध्यम संकार्य छोड़ करने की क्षमता विशेष रूप से उपयोगी नहीं है। जब यह उपयोगी हो जाता है तब पहला ऑपरेंड करता है, या (यदि यह एक मैक्रो तर्क है), तो एक दुष्प्रभाव होता है। फिर बीच में ऑपरेंड दोहराना दो बार साइड इफेक्ट करेगा। मध्य ऑपरेंड को छोड़कर पहले से गणना किए गए मान का उपयोग पुन: कंप्यूटिंग के अवांछनीय प्रभावों के बिना किया जाता है।
यह कुछ मैं पर भरोसा करना चाहिए, कुछ मानक में परिभाषित है? या सिर्फ एक (बुराई) जीसीसी विस्तार से बचना चाहिए? अपने कोड does'nt तो आप इसका इस्तेमाल कर सकते हैं किसी भी अन्य संकलक जीसीसी के अलावा अन्य कार्यान्वयन पर चलाने के लिए की जरूरत है
, अपनी आवश्यकताओं पर निर्भर करता है।हालांकि, यदि आपका कोड विभिन्न अन्य कंपाइलर कार्यान्वयनों पर निर्माण करना है तो आपको इसका उपयोग नहीं करना चाहिए।
किसी भी तरह, किसी को जितना संभव हो उतना सहज और पठनीय कोड लिखना चाहिए, क्योंकि मैं हमेशा इस तरह से (बदसूरत) से बचने का सुझाव दूंगा।
स्रोत
2012-06-08 09:29:10
यह एक बुरा जीसीसी विस्तार है जिसे आपको टालना चाहिए। – Lundin
मुझे नहीं पता कि हर कोई इस एक्सटेंशन से नफरत क्यों करता है। यह बहुत संक्षेप में है और अक्सर इसका मतलब है कि मेरा क्या मतलब है। मेरी इच्छा है कि इसे मानक में जोड़ा जाएगा। हालांकि, ऐसा नहीं है कि आप इसका उपयोग नहीं करना चाहिए यदि आप कंप्यूटर्स के साथ अन्य जीसीसी और क्लैंग के साथ संगतता चाहते हैं। –