दिलचस्प पोस्ट
.पीसी फाइलों से कैसे बचें? कॉफी-बाइट्स कोड तह का उपयोग कैसे करें क्या मैं जावा स्रोत फाइलों में मैक्रोज़ कर सकता हूं? मूल पृष्ठ से एक iframe में जावास्क्रिप्ट कोड को शामिल करना स्काला करी बनाम आंशिक रूप से कार्यान्वित कार्य एक JSON सरणी को पार्स करने के लिए GSON का उपयोग करना एसक्यूएल एक स्तंभ पर अधिकतम मूल्य के साथ केवल पंक्तियों का चयन करें सरणी php के माध्यम से लूप रनटाइम पर आउटपुट फाइलनाम बनाने के लिए स्ट्रिंग्स को पूर्णांक परिवर्तित करें अनुरोध पुस्तकालय: cx_freeze के बाद गायब हुई फाइल जावा नोब: सामान्य वस्तुओं पर जेनेरिक? जावास्क्रिप्ट ऑब्जेक्ट में मुख्य लुकअप का प्रदर्शन मेरे पास उबंटू सिस्टम पर पायथन है, लेकिन जीसीसी पायथन को नहीं ढूँढ पा रहा है जावा में एक स्थानीय फाइल को यूआरएल में पास करें "वस्तुओं का संग्रह आइटम स्रोत का उपयोग करने से पहले खाली होना चाहिए।"

सी ++ फ़ंक्शन मापदंडों में मूल्यांकन का आदेश

अगर हमारे पास तीन फ़ंक्शंस (एफयू, बार, और बाज़) हैं जो इस तरह से बनाये जाते हैं …

foo(bar(), baz()) 

क्या सी ++ मानक से कोई गारंटी है कि बार को बज़ से पहले मूल्यांकन किया जाएगा?

Solutions Collecting From Web of "सी ++ फ़ंक्शन मापदंडों में मूल्यांकन का आदेश"

नहीं, ऐसी कोई गारंटी नहीं है यह C ++ मानक के अनुसार अनिर्धारित है

बर्जने स्ट्रावट्रुप भी कुछ तर्कों के साथ "सी ++ प्रोग्रामिंग भाषा" का तीसरा संस्करण खंड 6.2.2 में स्पष्ट रूप से कहता है:

अभिव्यक्ति मूल्यांकन आदेश पर प्रतिबंधों के अभाव में बेहतर कोड उत्पन्न किया जा सकता है

हालांकि तकनीकी रूप से यह एक ही खंड के पहले भाग को संदर्भित करता है, जो कहता है कि अभिव्यक्ति के कुछ हिस्सों के मूल्यांकन के आदेश भी अनिर्धारित हैं, यानी

 int x = f(2) + g(3); // udefined whether f() or g() is called first 

बार () और बज़ () के लिए कोई विशिष्ट आदेश नहीं है – केवल एक ही बात मानक कहते हैं कि यह दोनों का मूल्यांकन किया जायेगा foo () से पहले। सी ++ मानक से, खंड 5.2.2 / 8:

तर्कों के मूल्यांकन के क्रम अनिर्दिष्ट हैं।

[5.2.2] फ़ंक्शन कॉल से,

तर्कों के मूल्यांकन के क्रम अनिर्दिष्ट हैं। फ़ंक्शन दर्ज होने से पहले तर्क अभिव्यक्ति मूल्यांकन के सभी दुष्प्रभाव प्रभावी होते हैं।

इसलिए, कोई गारंटी नहीं है कि bar() baz() से पहले चलेंगे, केवल उस bar() और baz() को foo से पहले बुलाया जाएगा।

इसके अलावा [5] अभिव्यक्तियों से ध्यान दें कि:

सिवाय जहां उल्लेख किया गया है [जैसे && और || लिए विशेष नियम ], व्यक्तिगत संचालकों के ऑपरेंडों के मूल्यांकन के मूल्यांकन और व्यक्तिगत अभिव्यक्तियों के उप-प्रक्षेपण, और जिस क्रम में दुष्प्रभाव होते हैं, उनका क्रम अनिर्दिष्ट है।

तो भी अगर आप पूछ रहे थे कि bar() foo(bar() + baz()) में baz() से पहले चलेंगे, तो आदेश अभी भी अनिर्दिष्ट है।