सी/C++ में,अपरिभाषित व्यवहार, या: स्विफ्ट में अनुक्रम बिंदु हैं?
int i = 0;
int j = i++ + i++ + ++i;
में दूसरा बयान है, दोनों
- अनिर्दिष्ट व्यवहार आह्वान क्योंकि ऑपरेंड के मूल्यांकन के आदेश अनिर्दिष्ट है, और
- अपरिभाषित व्यवहार , क्योंकि एक ही ऑब्जेक्ट पर दुष्प्रभाव
i
एक-दूसरे के सापेक्ष अपरिचित हैं।
उदाहरण
अब के लिए देखें, यह देखते हुए कि स्विफ्ट एक सुरक्षित भाषा के रूप में डिजाइन किया गया था, क्या इसी स्थिति यहाँ है?
var i = 0
let j = i++ + i++ + ++i
का परिणाम अच्छी तरह से परिभाषित है? क्या स्विफ्ट पुस्तक में j == 4
में भाषा संदर्भ से निष्कर्ष निकाला जा सकता है?
यह पूछने का एक अच्छा सवाल है, लेकिन दुर्भाग्यवश, मुझे यह महसूस हो रहा है कि उत्तर वर्तमान में "कोई नहीं जानता" ... – jtbandes
@jtbandes: धन्यवाद (लेकिन कोई असहमत है :) - आप शायद सही हैं। मैंने अब ऐप्पल डेवलपर फोरम में इसे क्रॉस-पोस्ट किया है, शायद कुछ फीडबैक देता है: https://forums.developer.apple.com/thread/20001। –
बहुत बढ़िया - क्रिस लैटनर ने जवाब दिया। मैं चुपके से उम्मीद कर रहा था कि जवाब "बाएं से दाएं" था :) – jtbandes