सामान्य स्थिति में, सी ++ किसी भी क्रम में अल्पविराम से अलग बयानों का मूल्यांकन करने की अनुमति देता है।
यदि आप फ़ंक्शन तर्कों के बीच अल्पविरामों का जिक्र कर रहे हैं, तो यह केवल एक विभाजक है।
अपने मामले में, आप अल्पविराम ऑपरेटर का उपयोग कर रहे हैं, और यह एक अनुक्रम बिंदु प्रस्तुत करता है जो गारंटी देता है कि अल्पविराम के बाएं ऑपरेंड से सभी दुष्प्रभाव सही मूल्यांकन करने से पहले बस गए हैं।
तो हाँ, यह अच्छी तरह से परिभाषित है।
खंड 5.18/1 आईएसओ सी ++ 98 मानक की ओर से:
अल्पविराम से अलग भाव की एक जोड़ी मूल्यांकन किया जाता है बाएँ-से-दाएँ और बाएँ अभिव्यक्ति के मूल्य खारिज कर दिया है। लवली-टू-रावल्यू (4.1), सरणी-टू-पॉइंटर (4.2), और फ़ंक्शन-टू-पॉइंटर (4.3) मानक रूपांतरण बाएं अभिव्यक्ति पर लागू नहीं होते हैं। अस्थायी अभिव्यक्ति के मूल्यांकन से पहले अस्थायी (12.2) के विनाश को छोड़कर बाएं अभिव्यक्ति के सभी दुष्प्रभाव (1.9) किए जाते हैं। परिणाम और परिणाम का मूल्य दाएं ऑपरेंड का प्रकार और मान है; इसका परिणाम एक लवल्यू है यदि इसका दायां ऑपरेंड है।
मुझे लगता है कि यह आपके बिंदु के बगल में है, लेकिन बस मामले में: आप उस स्थिति को 'i ++ <= 10' के रूप में फिर से लिख सकते हैं और अल्पविराम ऑपरेटर से छुटकारा पा सकते हैं। अब जाओ और मुझे बताओ कि यह आपके बिंदु के बगल में है। ':)' – sbi
@ एसबीआई - क्या यह वही काम करता है? मैं उम्मीद करता था कि उपसर्ग के साथ लेकिन पोस्टफिक्स नहीं। अर्थात। '++ i, i <= 10'' ++ i <= 10' –
@Steve जैसा ही है: आपने मुझे वहां पहुंचाया है। हां, यह '++ i <= 10' होना चाहिए। उसके लिए खेद है। (मुझे वास्तव में ऐसा करने का प्रयास नहीं करना चाहिए [चैटिंग] (http://chat.stackoverflow.com/rooms/10/c-lounge)।) – sbi