推 ericinttu:十三誡之8 12/12 19:12
推 iamstudent:函數的引數沒有保證執行順序,可能先從右邊先呼叫 12/12 19:12
→ iamstudent:f(g(), h()); //g()和h()的執行順序也不保證 12/12 19:13
→ iamstudent:最佳化可以決定選擇任何一種作法 12/12 19:14
→ iamstudent:不過f一定要等g和h都算出才會執行,這一點有保證 12/12 19:15
感謝^^恍然大悟
※ 編輯: asadman1523 來自: 140.129.19.21 (12/12 19:19)
→ mythnc:int *p = array; 12/12 23:18
→ GTS250:一維數組加一 是跳過整個數組(在這是跳4(格)*4(字節) ) 12/13 00:23
→ JyunYan:你把*p++改成*p+i的形式就可以了 12/13 01:13
推 elfkiller:沒開最佳化的話c++預設是由右到左PUSH 12/13 08:11
→ hilorrk:+mythnc 在這情況下&array和array都decay到一樣的型態 12/13 08:57
→ hilorrk:+elfkiller 有沒有開最佳化都一樣 C++標準未定義行為 12/13 08:58
→ diabloevagto:未定義就是未定義,怎麼能夠說是右到左... 12/13 09:46
→ angleevil:十三誡之8,c/c++為了速度,沒有強制規定由右到左運算 12/13 10:26
→ angleevil:乖一點,不要再誤用它,不然有一天這bug會讓你爆肝 12/13 10:27
推 elfkiller:語意不清sorry, 我想說的是函數__stdcall是由右到左 12/13 20:33
推 VictorTom:VC好像預設是cdecl, 小弟以為是看compiler設定或使用到 12/13 22:18
→ VictorTom:API/LIB設定好的calling convention. 另外, CC裡push進 12/13 22:18
→ VictorTom:stack的順序, 有規定剛好是參數evaluation的順序嗎?? 12/13 22:19
→ purincess:樓上VC預設是cdecl沒錯~~而且我記得好像是沒有規定push 12/14 02:54
→ purincess:順序是evaluate的順序. 12/14 02:54
→ purincess:事實上calling convention並不是C語言的一部分吧@ 12/14 02:55
推 elfkiller:沒有明文規定 不過為了handle不定參數函數一般會遵循 12/14 20:49