[問題] cpp 考題請教

看板C_and_CPP (C/C++)作者 (大吉嶺紅茶)時間4年前 (2020/04/20 09:37), 編輯推噓4(4013)
留言17則, 10人參與, 4年前最新討論串1/2 (看更多)
開發平台(Platform): Linux CentOS 7 編譯器: gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) 預期的正確結果(Expected Output):180 錯誤結果(Wrong Output):215 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) https://ideone.com/e.js/nn576o #include <iostream> using namespace std; int main() { int a=6, b=7; a *= a-- * --b; cout << a << endl; return 0; } 補充說明(Supplement): 使用 ideone.com 跑出來是正確的結果 180, 但是使用 CentOS 7 g++ 跑出來卻是 215 請教各位先進這是哪邊沒注意到? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.20.6 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1587346663.A.647.html

04/20 09:41, 4年前 , 1F
同一行不能修改a兩次以上 會UB
04/20 09:41, 1F

04/20 11:53, 4年前 , 2F
所以這樣的寫法是不好的寫法嗎?
04/20 11:53, 2F

04/20 11:53, 4年前 , 3F
另外, g++ 有可能修改設定修正嗎?
04/20 11:53, 3F

04/20 12:02, 4年前 , 4F
實務上遇到有人這麼寫我會揍他 XD
04/20 12:02, 4F

04/20 12:19, 4年前 , 5F
了解了, 搜索到一些 undefined behavior 的資訊, 謝謝
04/20 12:19, 5F

04/20 12:57, 4年前 , 6F
十三戒第八條
04/20 12:57, 6F

04/20 14:53, 4年前 , 7F
都2020了還有人在出這種題目 魚骨題真是禍害遺千年
04/20 14:53, 7F

04/20 16:48, 4年前 , 8F
工作這樣寫不會被幹飛嗎QQ
04/20 16:48, 8F

04/20 19:08, 4年前 , 9F
要看編譯器怎麼寫int乘法
04/20 19:08, 9F

04/20 19:51, 4年前 , 10F
xD
04/20 19:51, 10F

04/20 20:09, 4年前 , 11F
想說怎麼會是 UB, 還沒看到解答
04/20 20:09, 11F

04/20 20:11, 4年前 , 12F
語言也是會演進的, 所以答案也不會一成不變
04/20 20:11, 12F

04/20 20:56, 4年前 , 13F
在C++17下這樣還是UB嗎
04/20 20:56, 13F

04/20 21:23, 4年前 , 14F
原PO提的編譯器是gcc4.4.7 所以應該用c++0x的標準(逃)
04/20 21:23, 14F

04/22 12:45, 4年前 , 15F
a*=和a--之間並没有sequence point隔開,所以計算順序没
04/22 12:45, 15F

04/22 12:45, 4年前 , 16F
有規定
04/22 12:45, 16F

04/23 00:14, 4年前 , 17F
發現下面有人回了XDD
04/23 00:14, 17F
文章代碼(AID): #1UdFpdP7 (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
文章代碼(AID): #1UdFpdP7 (C_and_CPP)