看板 C_and_CPP 關於我們 聯絡資訊
int z = -1; std::cout<<z++ + z<<endl; std::cout<<z + z++<<endl; 請問上面兩個式子有啥不一樣?? 第一個是先Z+Z再Z=Z+1 所以等於-2 但是第二個是0,可是我推不出來誰可以解說一下 而且兩個式子感覺是一樣的 0.0 謝謝 我後來檢查發現第一個式子輸出-2再來z變成0 問題可能出現在這 但是正確的運算優先順序是?? 好困惑= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.237.108 ※ 編輯: kobe123 來自: 122.116.237.108 (02/04 00:58)
firose:undefined behavior 02/04 01:00
kobe123:啥意思@@? 02/04 01:01
kobe123:Z+Z=-2 , Z=Z+1=-1 為啥變0 02/04 01:02
chrisdar:int z = -1; 02/04 01:12
chrisdar::cout<<z + z<<endl; 02/04 01:12
chrisdar:z++ // 0 02/04 01:12
chrisdar::cout<<z + z<<endl; 02/04 01:12
chrisdar:z++ // 1 02/04 01:12
chrisdar:推壞了 std::cout<<z + z<<endl;z++; 02/04 01:14
kobe123:Z++那裏要用原來的z來算答案就對了...太粗心了orz||| 02/04 01:21
LPH66:正解是一樓 未定義行為 因為你在z++還沒結算前又去抓z 02/04 01:36
LPH66:這樣z++的時間點是隨人實作的 02/04 01:36
LPH66:(應該說隨compiler實作) 02/04 01:36
LPH66:參考置底十誡之九 02/04 01:37
softwind:萬年OP阿 ... 02/04 01:52
kobe123:恩恩感謝...忘了看置底0.0 02/04 02:25