精華區beta Programming 關於我們 聯絡資訊
※ 引述《aecho (星空下的鮪魚)》之銘言: : ※ 引述《khoguan (Khoguan Phuann)》之銘言: : : int i = 0; : : cout << i << ' ' << i++; // 不同機器有不同結果,但並不違反標準 ^^^^^^^^ 嚴格一點說,是指容許個別的「編譯環境的實作」(implementation) 自行決定 evaluation order : 可以請教一下嗎? : 所以 cout << ... << .... ; : 並不一定是從右邊執行到左邊囉 ?? : 而是要看是哪一家的compiler : 並且依他們如何實作嗎 ?? cout << a_exp << b_exp // exp 指 expression 等於 ((cout << a_exp) << (b_exp)) 代換成 ((A_exp) << (B_exp)) 當然要算出 A_exp 以及 B_exp 之後,才能將 << 加諸於其上,但是 要先 evaluate A_exp 或先 evaluate B_exp,其順序則是 unspecified. 白話一點的說法是:先算 A_exp 或先算 B_exp, 標準並不指定(為了讓 implementation 充份發揮其環境的效能) 參考 http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/ Expressions.html 這篇文章的說法未必 100% 正確(他最後似乎混淆了 unspecified 和 undefined 這兩個概念),但應該非常接近了 :-) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.208.168