[問題] ++ 與陣列的問題

看板C_and_CPP作者 (伸卡56)時間8年前 (2017/03/07 23:56), 編輯推噓15(15013)
留言28則, 18人參與, 最新討論串1/2 (看更多)
小弟CPP程式新手 想請問各位一個++與陣列搭配的問題 code如下 #include<iostream> int main() { int a[3]={0,0,0}; int x=2; a[x++] = --x; for(int i=0;i<3;i++) cout<<a[i]; system("PAUSE"); return 0; } 我用dev c++ 跟code::blocks 執行出來的結果都是002 用的compiler是gcc v5.3 但是同學用code::blocks 編譯完相同的code 結果是010 想請問各位大大怎麼看這段碼? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.69.65 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1488930972.A.1B2.html

03/08 08:27, , 1F
未定義行為 結案
03/08 08:27, 1F

03/08 08:46, , 2F
問我怎麼看,我只會說題目爛死了
03/08 08:46, 2F

03/08 09:08, , 3F
看asm碼比較看看
03/08 09:08, 3F

03/08 09:33, , 4F
未定義行為看ASM沒意義
03/08 09:33, 4F

03/08 11:33, , 5F
佔版面吧
03/08 11:33, 5F

03/08 11:44, , 6F
跟雞生蛋問題一樣,自找麻煩
03/08 11:44, 6F

03/08 11:55, , 7F
去把置底13誡的第8點背起來 XD
03/08 11:55, 7F

03/08 12:01, , 8F
很多老師喜歡教這個來害人
03/08 12:01, 8F

03/08 12:09, , 9F
雖然是十三誡 C++17好像會規範 等三年後就有固定答案
03/08 12:09, 9F

03/08 12:12, , 10F
到底為啥要這樣寫lol百思不解
03/08 12:12, 10F

03/08 13:01, , 11F
a[x++] = --x; 幹嘛這樣寫?
03/08 13:01, 11F

03/08 13:19, , 12F
C++17 不是已經在眼前了嗎...
03/08 13:19, 12F

03/08 13:29, , 13F
"c++17為啥要三年後 今年不是2017了嗎...
03/08 13:29, 13F

03/08 13:51, , 14F
這樣寫程式碼比較緊湊啊 (誤超大)
03/08 13:51, 14F

03/08 14:19, , 15F
沒意義XD
03/08 14:19, 15F

03/08 14:19, , 16F
17的規定是右邊先執行,再來才是左邊
03/08 14:19, 16F

03/08 14:21, , 17F
關鍵字是什麼?想查一下規格
03/08 14:21, 17F

03/08 14:34, , 18F
回soheadsome 是等C++20??
03/08 14:34, 18F

03/08 14:35, , 19F
p0145r2是那個提案的編號
03/08 14:35, 19F

03/08 14:38, , 20F
剛看了一下,有p0145r3的更新版本
03/08 14:38, 20F

03/08 15:36, , 21F
20年前左右的PL曾經說過部分compiler會先處理右邊
03/08 15:36, 21F

03/08 15:38, , 22F
所以那一行等同 x=1; a[1]=x; x=2
03/08 15:38, 22F

03/08 15:39, , 23F
PL => programming languages
03/08 15:39, 23F

03/08 15:46, , 24F
因為是未定義啊 所以有先處理右邊的compiler 也會有左邊
03/08 15:46, 24F

03/08 15:46, , 25F
先取值的compiler
03/08 15:46, 25F

03/08 19:36, , 26F
到底哪個老師亂教這種東西....
03/08 19:36, 26F

03/09 14:18, , 27F
這是「未定義行為」,會因為編譯器和系統不同而有不
03/09 14:18, 27F

03/09 14:18, , 28F
同的結果
03/09 14:18, 28F
文章代碼(AID): #1OlqYS6o (C_and_CPP)
文章代碼(AID): #1OlqYS6o (C_and_CPP)