मुझे पता है कि यह परिचित लग रहा है लेकिन यह इंटर्न की भर्ती के लिए माइक्रोसॉफ्ट द्वारा परीक्षण में एक समस्या के रूप में मुझे लाया गया है। मुझे लगता है कि y=++y
मानक अनुपालन नहीं है, लेकिन मुझे लगता है कि यह सुनिश्चित करना बेहतर होगा (सुनिश्चित नहीं है कि मैं उन लोगों से बेहतर हूं जो एमएस में इन परीक्षणों को लिखते हैं)। तो मैं आपकी सलाह पूछ रहा हूँ। क्या आपको लगता है कि इस तरह के भाव मानक-अनुरूप हैं और परिणामस्वरूप अपरिभाषित व्यवहार नहीं है?`y = ++ y`, क्या यह मानक अनुपालन है? [जो माइक्रोसॉफ्ट द्वारा एक परीक्षण में दिखाई देता है]
#include <stdio.h>
int main(){
int a = 10;
int b = 10;
a = ++a; //What ???
b = b++; //What ???
printf("%d %d\n",a,b);
return 0;
}
gcc
जब -Wsequence-point
साथ संकलित करने के लिए प्रयोग किया जाता है इसके बारे में शिकायत। (यह स्पष्ट रूप से कहा गया है न कि क्या यह एक सी या सी ++ विशिष्ट समस्या है।)
लेकिन केवल चार जवाब प्रदान की:
a) 10 10
b) 11 10
c) 10 11
d) 11 11
एक यद्यपि केवल एक उत्तर चुनें तक ही सीमित नहीं है (इसलिए शायद मैं चुनना चाहिए सभी चार?)
ठीक है, मेरी राय में, आत्म-वृद्धि और असाइनमेंट के बीच कोई अनुक्रम बिंदु नहीं है। तो यह विनिर्देश का उल्लंघन करता है। है ना?
क्या आप अपना उत्तर सी ++ 03 या सी ++ 11 के संदर्भ में चाहते हैं? वे इस सामान के विभिन्न तरीकों से कारण हैं। –
आप सही हैं। यह अपरिभाषित व्यवहार है। – Art
हां, यह यूबी है, लेकिन मैं अभी भी बी उठाऊंगा) उत्तर के रूप में: पी –