精華區beta Programming 關於我們 聯絡資訊
※ 引述《UNARYvvv (有趣生活)》之銘言: : ※ 引述《khoguan (Khoguan Phuann)》之銘言: : : 上表中,「有初始化,但沒用到」那種情形,我剛才用一個很簡單的 : : 例子,在 VC++ 7.1 下測試: : : int main() : : { : : int a = 0, b = a; : : } : 嗯..其實我有個疑惑 : 真的可以寫 int a=0,b=a; 嗎? : 總覺得怪怪的 : 剛才去翻了一下 K&R 2/e : SECTION 3.6 p.63 頭兩行 : "The commas that separate function arguments, variables in : declarations ,etc., are not comma operators, and do not : guarantee left to right evaluation." : 以前就是因為記著這個 : 所以我一直避免同一個宣告式裡面,後面的變數參考前面的 : 不管是寫 C 還是 C++ : ..雖然我用 VC 跟 gcc 試驗編譯都會過,執行結果也對.. : 還是說 C++ 規格訂得不一樣呢 我又把事情想得簡單了 XD 翻開我的 K&R II, 發現您所引的這段文字,我以前讀此書時 曾畫過線。 (咚) 又將 C++ 標準文件打開來找,一時間雖有找到一些相關說明, 但仍無把握 int a=0, b=a; 到底是否完全沒問題。像是 int a = 0; int b = ++a, c = ++a; 就更可疑啦。於是去 comp.lang.c++.moderated 提問,等有較 權威性的答案後,再來此報告 :-) 至於下述寫法就不 portable: int i = 0; cout << i << ' ' << i++; // 不同機器有不同結果,但並不違反標準 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.208.168