※ 引述《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