[問題] i=5; j=++i + ++i + ++i; j=22...

看板C_and_CPP作者 (喂!威,喂?)時間13年前 (2013/01/10 16:50), 編輯推噓0(4410)
留言18則, 13人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux codeblock 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 剛剛在網路上亂看,看到標題中的這個問題 我實在是想不透為甚麼= = 餵入的資料(Input): 預期的正確結果(Expected Output): j = 21 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) int i = 5; int j= ++i + ++i + ++i; cout << j <<endl; //以下是我加入測試的 i = 5; cout << ++i << endl; cout << ++i << endl; cout << ++i << endl; i = 5; j = 0; j = ++i + ++i; cout << j << endl; // 這邊j是14,代表第二次++i讓i變成8 ? 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.5.242.122 ※ 編輯: andrenvq57 來自: 24.5.242.122 (01/10 16:54)

01/10 16:55, , 1F
undefined behavior 結束
01/10 16:55, 1F

01/10 16:56, , 2F
Undefined Behavior,噓一下印象深刻。
01/10 16:56, 2F

01/10 16:58, , 3F
不要花時間在這種沒營養的東西上面....
01/10 16:58, 3F

01/10 17:01, , 4F
奇怪我在codeBlock上面可以跑阿= =
01/10 17:01, 4F

01/10 17:02, , 5F
undefined behavior: 行為在不同平台不同編譯器可能不同
01/10 17:02, 5F

01/10 17:03, , 6F
不是不能跑,是沒有規定它會怎麼跑
01/10 17:03, 6F

01/10 17:04, , 7F
我了解為甚麼你說沒營養了XD
01/10 17:04, 7F
謝了各位 我又上了一課 ※ 編輯: andrenvq57 來自: 24.5.242.122 (01/10 17:10)

01/10 18:05, , 8F
我的原則是看到 ++ 出現在同一行你就要小心了, 避免這
01/10 18:05, 8F

01/10 18:05, , 9F
種 code
01/10 18:05, 9F

01/10 18:05, , 10F
補噓
01/10 18:05, 10F

01/10 18:43, , 11F
十三誡在哭了
01/10 18:43, 11F

01/10 19:03, , 12F
魚骨頭文 推一下好了
01/10 19:03, 12F

01/10 19:37, , 13F
<(+++++< OK
01/10 19:37, 13F

01/11 08:32, , 14F
j=i++ + ++i; java 跟C跑出來會不一樣
01/11 08:32, 14F

01/11 23:34, , 15F
學這種東西不如去找專案從頭到尾做完..code再醜都比這好
01/11 23:34, 15F

01/12 12:56, , 16F
<(++++++++++< 搞定!
01/12 12:56, 16F

01/12 20:03, , 17F
+++++++[->+++>++++>+>++<<<<]
01/12 20:03, 17F

01/13 05:16, , 18F
這篇是BrainF*ck嘛?XDDDDD
01/13 05:16, 18F
文章代碼(AID): #1Gxe3ITJ (C_and_CPP)