मैंने हाल ही में comp.lang.C++ पर कोड का एक टुकड़ा देखा है जो एक फ़ंक्शन से स्थिर पूर्णांक का संदर्भ लौटाता है। कोड इससमयपूर्व अनुकूलन या मैं पागल हूँ?
int& f()
{
static int x;
x++;
return x;
}
int main()
{
f()+=1; //A
f()=f()+1; //B
std::cout<<f();
}
की तरह कुछ था जब मैं अपने शांत विजुअल स्टूडियो डीबगर का उपयोग कर आवेदन डिबग मैं बयान एक करने के लिए सिर्फ एक कॉल को देखा और लगता है कि क्या मैं हैरान था। मैंने हमेशा सोचा i+=1
i=i+1
के बराबर था इसलिए f()+=1
f()=f()+1
के बराबर होगा और मुझे f()
पर दो कॉल दिखाई देगी, लेकिन मैंने केवल एक देखा। यह क्या बकवास है? क्या मैं पागल हूं या मेरा डीबगर पागल हो गया है या क्या यह समयपूर्व अनुकूलन का परिणाम है?
'स्थिर int x' अनियमित है। –
हालांकि, सवाल से संबंधित नहीं है। – BjoernD
@ रैम्बो: मुझे लगता है कि आप इस धागे के बारे में बात कर रहे हैं: http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/566222d9b756ecc5/3279970278f46946 –