[問題] x=x++

看板C_and_CPP作者 (如果)時間16年前 (2009/11/18 19:51), 編輯推噓16(16014)
留言30則, 17人參與, 最新討論串1/1
請問 int x=100; x=x++; 最後x是100, 為什麼? 最後x不會+1嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.12.79

11/18 19:55, , 1F
我用 vs2008 跑出 101 耶...?
11/18 19:55, 1F

11/18 19:56, , 2F
應該是先assign值再++ 所以在那行時x=100 下一行就+1?
11/18 19:56, 2F

11/18 19:59, , 3F
我在下面接了cout 結果跑出來是100 ?
11/18 19:59, 3F

11/18 19:59, , 4F
右值(x++)的值是100 然後受到side effect影響x會再加1
11/18 19:59, 4F

11/18 20:00, , 5F
所以x最後是101
11/18 20:00, 5F

11/18 20:00, , 6F
十誡之九
11/18 20:00, 6F

11/18 20:36, , 7F
一個運算式寫入x兩次,你有這麼急嗎
11/18 20:36, 7F

11/18 20:41, , 8F
這是考題 我想問觀念 所以如果考出來答案要寫多少?
11/18 20:41, 8F

11/18 20:44, , 9F
這題真的出得很差 不過我猜大概是想問x++的返回值
11/18 20:44, 9F

11/18 20:58, , 10F
寫undefined behavior. 教授有意見的話拿c standard戰他
11/18 20:58, 10F

11/18 21:01, , 11F
有趣的是我用c編譯會說operation on `x' may be undefined
11/18 21:01, 11F

11/18 21:02, , 12F
用c++編譯就沒warning 結果都是100 我用dev-c++ 4.9.9.2
11/18 21:02, 12F

11/18 21:11, , 13F
慘了, 萬一有C/C++標準不同的就更讓人頭痛想哭了....
11/18 21:11, 13F

11/18 21:12, , 14F
g++要開-Wall或-Wsequence-point才會給warning
11/18 21:12, 14F

11/18 21:13, , 15F
c和c++之間一直都有一些一格洞會不小心踩到啊XD
11/18 21:13, 15F

11/18 21:15, , 16F
都有-Wall 請問-Wsequence-point是什麼@@? 另外這是考C++
11/18 21:15, 16F

11/18 21:27, , 17F
這部份連很多老師都搞不清楚
11/18 21:27, 17F

11/18 21:28, , 18F
(把Java的東西拿來用......)
11/18 21:28, 18F

11/18 21:37, , 19F
打開sequence point相關的warning.
11/18 21:37, 19F

11/18 21:48, , 20F
如果是考題,也不過是考你++運算子,這種等級的題目
11/18 21:48, 20F

11/18 21:48, , 21F
就算被扣分又如何,也不會掉根鳥毛
11/18 21:48, 21F

11/18 21:57, , 22F
有的公司筆試也愛考這種沒水準的題目
11/18 21:57, 22F

11/18 22:25, , 23F
有水準沒水準很難說, 要看他覺得的正確答案是啥.... XD
11/18 22:25, 23F

11/18 22:26, , 24F
如果他的答案也包括了, not a good style, don't do it
11/18 22:26, 24F

11/18 22:26, , 25F
或者是 undefined behavior, 我覺得都不算差
11/18 22:26, 25F

11/19 00:50, , 26F
.....原po看來還沒看懂....還有結論.....
11/19 00:50, 26F

11/19 09:26, , 27F
什麼鬼結論呀…
11/19 09:26, 27F

11/19 09:27, , 28F
哈哈
11/19 09:27, 28F

11/19 23:15, , 29F
....
11/19 23:15, 29F

11/21 00:06, , 30F
犯了十戒之九 至底看一下
11/21 00:06, 30F
※ 編輯: pttfly 來自: 36.228.246.200 (01/03 02:14)
文章代碼(AID): #1B0z-gWP (C_and_CPP)