c++ - cout << order of call to functions it prints? -


निम्न कोड:

  myQueue.enqueue ('a'); myQueue.enqueue ( 'बी'); Cout & lt; & lt; MyQueue.dequeue () & lt; & lt; myQueue.dequeue ();  

कंसोल पर "बीए" प्रिंट करता है

जबकि:

  myQueue.enqueue ('a'); myQueue.enqueue ( 'बी'); Cout & lt; & lt; myQueue.dequeue (); Cout & lt; & lt; myQueue.dequeue ();  

प्रिंट करता है "अब" ऐसा क्यों है?

ऐसा लगता है जैसे cout सबसे पहले (सबसे निकटतम;) फ़ंक्शन को सबसे पहले बुला रहा है और इसके रास्ते में काम कर रहा है

& lt; & lt; ऑपरेटर, ताकि संकलक पहले dequeue फ़ंक्शन का मूल्यांकन करने के लिए स्वतंत्र है इसकी गारंटी क्या है कि दूसरा dequeue कॉल का परिणाम (जिस क्रम में यह अभिव्यक्ति में प्रकट होता है और यह जरूरी नहीं कि जिस क्रम का मूल्यांकन किया गया है) ' & lt; ' के परिणाम के लिए एड 'पहले (यदि आपको लगता है कि मैं क्या कह रहा हूं)।

तो कंपाइलर आपका अनुवाद करने के लिए स्वतंत्र है इनमें से किसी भी तरह के कोड (छद्म मध्यवर्ती सी ++) में कोड। इसका एक संपूर्ण सूची नहीं है।

  auto tmp2 = myQueue.dequeue (); ऑटो tmp1 = myQueue.dequeue (); std :: ostream & amp; Tmp3 = cout & lt; & lt; tmp1; टीएमपीएक्स & lt; & lt; tmp2;  

या

<पूर्व> ऑटो tmp1 = myQueue.dequeue (); ऑटो tmp2 = myQueue.dequeue (); std :: ostream & amp; Tmp3 = cout & lt; & lt; tmp1; टीएमपीएक्स & lt; & lt; tmp2;

या

<पूर्व> ऑटो tmp1 = myQueue.dequeue (); std :: ostream & amp; Tmp3 = cout & lt; & lt; tmp1; ऑटो tmp2 = myQueue.dequeue (); टीएमपीएक्स & lt; & lt; tmp2;

अस्थायी वस्तुएं मूल अभिव्यक्ति के अनुरूप हैं।

  cout & lt; & lt; MyQueue.dequeue () & lt; & lt; myQueue.dequeue (); | | | | | | | ____ टीएमपी 1 _____ | | _____ टीएमपी 2 ____ | | | | ________ टीएमपीपीएस _________ |  

Comments

Popular posts from this blog

objective c - iPhone and it's wireless area -

unix - Listing all shared memory segments used by a process on AIX5.3+ -

tsql - Correct sql/hql query (aggregate in where clause) -