[問題] 關於cout

看板C_and_CPP作者 (問號)時間11年前 (2012/08/08 21:28), 編輯推噓2(208)
留言10則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 問題(Question): 請問程式碼背後是如何運作的,會導致這個結果? 預期的正確結果(Expected Output): 62 錯誤結果(Wrong Output): 61 程式碼(Code):(請善用置底文網頁, 記得排版) int test(int* x){ *x=2; return 3*(*x); } int main(){ int a=1; cout<<test(&a)<<a; system("pause"); } 補充說明(Supplement): 後來把cout<<test(&a)<<a; 改成 cout<<test(&a);cout<<a; 就可以了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.94.225

08/08 21:40, , 1F
<<好像在同一行是平行執行
08/08 21:40, 1F

08/08 21:43, , 2F
剛剛看好像VC跟gcc編出來的不太一樣@.@
08/08 21:43, 2F

08/08 21:56, , 3F
所以是編譯器的問題?
08/08 21:56, 3F

08/08 22:03, , 4F
calling convention
08/08 22:03, 4F

08/08 22:10, , 5F
; 是順序點,保證 cout << a 執行時,test(&a) 已處理
08/08 22:10, 5F

08/08 22:10, , 6F
然後 << 不是順序點,所以沒有這種保證
08/08 22:10, 6F

08/08 22:20, , 7F
我也覺得是樓上講的 所以不同的編譯器結果才會不一樣
08/08 22:20, 7F

08/08 22:50, , 8F
這跟第八戒有關系嗎?
08/08 22:50, 8F

08/08 23:13, , 9F
08/08 23:13, 9F

08/08 23:40, , 10F
了解了 謝謝各位
08/08 23:40, 10F
文章代碼(AID): #1G8cc7xy (C_and_CPP)