दिलचस्प पोस्ट
पथ से फ़ाइल का नाम निकालें, चाहे कोई भी ओएस / पथ प्रारूप हो मैं कैसे जांच सकता हूँ कि जावास्क्रिप्ट चर फ़ंक्शन प्रकार है? टेम्पलेट्स में कीवर्ड 'टाइपनाम' और 'क्लास' का अंतर? हॉवर पर बोल्ड होने पर इनलाइन तत्वों को बदलते हैं विंडोज 7 – पथ जोड़ें स्ट्रक्चर घोषणा में बृहदान्त्र का क्या अर्थ है, जैसे: 1,: 7,: 16, या: 32? आप फ़ाइल को कैसे जोड़ सकते हैं? AngularJS में jQuery प्लगइन्स को एकीकृत करने का सही तरीका मॉलोक / फ्री / नए / डिलीट पर कब और क्यों 0xCD, 0xDD, आदि में ओएस आरंभीकरण मेमोरी होगी? जावास्क्रिप्ट, ^ (कैरेट) ऑपरेटर क्या करता है? FindViewByID रिटर्न शून्य जावा में हैश कोड () स्ट्रिंग में एक गुणक के रूप में 31 का उपयोग क्यों करता है? कई डेटा.फ्रेम को एक डेटा.फ्रेम में एक लूप के साथ मिलाएं दो या अधिक iPhone अनुप्रयोगों के बीच डेटा साझा करें मैं उस स्क्रिप्ट के भीतर से स्क्रिप्ट फ़ाइल नाम कैसे प्राप्त करूं?

सी में अनुक्रम अंक

अनिवार्य प्रोग्रामिंग में एक अनुक्रम बिंदु कंप्यूटर प्रोग्राम के निष्पादन में किसी भी बिंदु को परिभाषित करता है जिस पर यह गारंटी है कि पिछले मूल्यांकन के सभी दुष्प्रभाव किए जाएंगे, और बाद के मूल्यांकनों से कोई साइड इफेक्ट नहीं किया गया है।

इसका क्या मतलब है? क्या कोई इसे सरल शब्दों में समझा सकता है?

वेब के समाधान से एकत्रित समाधान "सी में अनुक्रम अंक"

जब एक अनुक्रम बिन्दु होती है, तो यह मूल रूप से इसका अर्थ है कि आपको गारंटी है कि पिछले सभी ऑपरेशन पूर्ण हैं।

दो बार एक अनुक्रमण बिंदु के बिना एक चर को बदलना अनिर्धारित व्यवहार का एक उदाहरण है।

उदाहरण के लिए, i = i++; अपरिभाषित है क्योंकि i दो परिवर्तनों के बीच कोई अनुक्रम बिंदु नहीं है i

विकिपीडिया में सी और सी ++ मानकों में क्रम अंक की एक सूची है, हालांकि निश्चित सूची को हमेशा आईएसओ मानक से लिया जाना चाहिए। C99 परिशिष्ट से C:


5.1.2.3 में वर्णित अनुक्रम अंक निम्नलिखित हैं:

  • तर्क के मूल्यांकन के बाद एक फ़ंक्शन पर कॉल (6.5.2.2)।
  • निम्न ऑपरेटर के पहले ऑपरेंड का अंत: तार्किक AND && (6.5.13); तार्किक OR || (6.5.14); सशर्त? (6.5.15); अल्पविराम, (6.5.17)
  • पूर्ण घोषणाकर्ता का अंत: घोषणाओं (6.7.5);
  • पूर्ण अभिव्यक्ति का अंत: एक प्रारंभिक (6.7.8); अभिव्यक्ति कथन में अभिव्यक्ति (6.8.3); एक चयन बयान (या स्विच) की नियंत्रित अभिव्यक्ति (6.8.4); कुछ समय के नियंत्रण अभिव्यक्ति या बयान (6.8.5); कथन के लिए प्रत्येक अभिव्यक्ति (6.8.5.3); रिटर्न स्टेटमेंट में अभिव्यक्ति (6.8.6.4)
  • लाइब्रेरी फ़ंक्चर रिटर्न के ठीक पहले (7.1.4)।
  • प्रत्येक स्वरूपित इनपुट / आउटपुट फ़ंक्शन रूपांतरण स्पेसिफायर (7.1 9.6, 7.24.2) से संबंधित कार्यों के बाद।
  • प्रत्येक कॉल को किसी तुलनात्मक समारोह में तत्काल और तत्काल किसी भी कॉल के तुलनात्मक प्रकार्य और उस कॉल (7.20.5) के तर्कों के रूप में पारित वस्तुओं के किसी भी आवागमन के तुरंत बाद।

सी 11 में शब्दों को बदल दिया गया है ऐसा लगता है कि टर्नेरी ऑपरेटर को अलग कर दिया गया है और इसमें कुछ और विस्तार शामिल है:


5.1.2.3 में वर्णित अनुक्रम अंक निम्नलिखित हैं:

  • फंक्शन डिज़िनेएटर के मूल्यांकन और फ़ंक्शन कॉल और वास्तविक कॉल में वास्तविक तर्क के बीच। (6.5.2.2)।
  • निम्नलिखित ऑपरेटरों के प्रथम और दूसरे ऑपरेटरों के मूल्यांकन के बीच: तार्किक AND && (6.5.13); तार्किक OR || (6.5.14); अल्पविराम, (6.5.17)
  • सशर्त के प्रथम ऑपरेंड के मूल्यांकन के बीच: ऑपरेटर और जो भी दूसरे और तीसरे ऑपरेंड का मूल्यांकन किया जाता है (6.5.15)
  • एक पूर्ण घोषणापत्र का अंत: घोषणाओं (6.7.6);
  • एक पूर्ण अभिव्यक्ति और मूल्यांकन करने के लिए अगले पूर्ण अभिव्यक्ति के मूल्यांकन के बीच। निम्नलिखित पूर्ण अभिव्यक्तियाँ हैं: एक प्रारंभिक (6.7.9); अभिव्यक्ति कथन में अभिव्यक्ति (6.8.3); एक चयन बयान (या स्विच) की नियंत्रित अभिव्यक्ति (6.8.4); कुछ समय के नियंत्रण अभिव्यक्ति या बयान (6.8.5); कथन के लिए प्रत्येक अभिव्यक्ति (6.8.5.3); रिटर्न स्टेटमेंट में अभिव्यक्ति (6.8.6.4)
  • लाइब्रेरी फ़ंक्चर रिटर्न के ठीक पहले (7.1.4)।
  • प्रत्येक स्वरूपित इनपुट / आउटपुट फ़ंक्शन रूपांतरण स्पेसिफायर (7.21.6, 7.28.2) के साथ जुड़े कार्यों के बाद।
  • प्रत्येक कॉल को तुलना फ़ंक्शन के तुरंत पहले और तत्काल, और किसी भी कॉल के बीच एक तुलना समारोह में और उस कॉल (7.22.5) के तर्कों के रूप में पारित वस्तुओं के किसी भी आंदोलन के भीतर।

अनुक्रम बिंदुओं के बारे में नोट करना एक महत्वपूर्ण बात यह है कि वे वैश्विक नहीं हैं, बल्कि उन्हें स्थानीय बाधाओं का एक समूह माना जाना चाहिए। उदाहरण के लिए, बयान में

 ए = एफ 1 (एक्स ++) + एफ 2 (वाई ++);

एक्स + + के मूल्यांकन और एफ 1 के कॉलम के बीच एक अनुक्रम बिंदु है, और y ++ के मूल्यांकन और एफ 2 के कॉल के बीच एक अन्य अनुक्रम बिंदु है। हालांकि, यह कोई गारंटी नहीं है कि एक्स को एफ 2 से पहले या बाद में बढ़ेगा या नहीं, या नहीं कि वाई एक्स से पहले या बाद में बढ़ेगा। यदि F1 y या f2 में परिवर्तन करता है x, परिणाम अपरिभाषित होंगे (यह कंपाइलर के उत्पन्न कोड के लिए वैध होगा जैसे कि एक्स और वाई, वेतन वृद्धि x, कॉल एफ 1, पहले से पढ़े गए मूल्य के खिलाफ y जांचें, और – अगर यह बदल गया – सभी बार्नी के वीडियो और व्यापार को ढूंढने और नष्ट करने के लिए एक हिसात्मक आचरण पर जाना; मुझे नहीं लगता कि कोई वास्तविक कंपाइलर कोड उत्पन्न करते हैं जो वास्तव में ऐसा करते हैं, हाय, लेकिन मानक के तहत इसे अनुमति दी जाएगी)।

एक उदाहरण के साथ पक्सदीपोलो के जवाब पर विस्तार

बयान ग्रहण करें

 x = i++ * ++j; 

तीन साइड इफेक्ट्स हैं: i * (j+1) के परिणाम एक्स को जोड़ते हुए, 1 से I को जोड़ते हुए, और 1 से जे जोड़ते हुए। जिस क्रम में दुष्प्रभाव लागू किए जाते हैं वह अनिर्दिष्ट है; मैं और जम्मू मूल्यांकन किए जाने के तुरंत बाद इन्हें बढ़ाया जा सकता है, या वे दोनों के मूल्यांकन के बाद तक बढ़ा नहीं सकते हैं, लेकिन एक्स से पहले सौंपा गया है, या जब तक x को असाइन नहीं किया गया है तब तक वे वृद्धि नहीं किए जा सकते हैं।

अनुक्रम बिंदु वह बिंदु है जहां सभी दुष्प्रभावों को लागू किया गया है (एक्स, आई, और जम्मू सभी अपडेट किए गए हैं), उस आदेश की परवाह किए बिना जिसमें वे लागू किए गए थे

इसका अर्थ है कि संकलक कर्कश अनुकूलन, चाल और जादू कर सकता है लेकिन इन तथाकथित अनुक्रम बिंदुओं पर एक अच्छी परिभाषा वाली स्थिति तक पहुंचनी चाहिए।