Re: [問題] 請問這個小程式的執行結果??

看板C_and_CPP (C/C++)作者 (xanadu)時間13年前 (2012/10/03 09:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《changyuheng (張昱珩)》之銘言: : 算式應該是反序 parse 進 stack, : 所以 : 1. ++a 讓 a = 2 : 2. a++ 告訴 a 在完成值的傳遞後要 +1 : ↓ : b = (2) + (2); : a = 3 : 上面的說法可以由下列式子驗證: : (a++) + (++a) * 2 以常見的VC++.net和GCC來說,你的說法問題很大 VC++.net我是用2008版本 GCC是x86 Linux的版本(詳細懶得察) 在a是整數型態時(int a;) 這兩個共通都是會把a++(a--)提出來最後再算 至於++a(--a)的部分 VC++.net也會先全部提出來,加完後再計算運算式 GCC的就有點複雜, 不過大致上它會從"左到右"一個一個算,看到++a就add 1 例如: (++a)*512 + (a++)*64 + (++a)*8 + (a++) x86 Linux的GCC 結果 2233(8進制) VC++.net結果3333(8進制) 總之,這種未定義的東西,各家Compiler要怎麼編譯都行... 就算是GCC,不同平台的結果也不能保證相同。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.72.13.9
文章代碼(AID): #1GQvegOx (C_and_CPP)
文章代碼(AID): #1GQvegOx (C_and_CPP)