看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) gcc 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 程式中++a跟a++放在同一行 但是++a是那行程式執行完才+1 為何秀出的結果為4 餵入的資料(Input): 預期的正確結果(Expected Output): 3 錯誤結果(Wrong Output): 4 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/OFmwZ 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.20.92
bibo9901:置底第八誡... 12/23 17:43
diabloevagto:但我不太懂的是++放在後面不是應該是執行完此行 12/23 18:07
diabloevagto:所以怎麼會產生未定義行為 12/23 18:09
autumned:疑? 不是本來就是4 @@ 12/23 18:14
adrianshum:post-fix ++/-- 的意思 *不是* 此行後才+1/-1 12/23 18:15
adrianshum:而是 evaluate 為 increment 前或後的值 12/23 18:16
adrianshum:什麼時候做 increment 是以 operator precedence 決定 12/23 18:16
diabloevagto:所以這個就是未定義行為摟 12/23 18:24
diabloevagto:assign的優先權是最低的嗎?比那些evaluate還低? 12/23 18:28
DEATHX:這題上次皮卡丘有出,莫非兄弟您也去那面試了? 12/23 19:13
diabloevagto:學長問我的xd我一開使也是認為說是未定義行為,看是 12/23 19:49
diabloevagto:但是看到有前後++就覺得很奇怪搞不懂= = 12/23 19:50
TaiwanXDman:日經文 12/23 21:08
Favonia:在 C 的世界裡面 ++ 跟 assign 是兩回事 12/23 23:02
Favonia:良心建議不用浪費生命了解可以輕鬆避開的寫法...... 12/23 23:03
loveme00835:行數愈多愈帥不知道嗎? 12/23 23:12
blackwindy:請問如果在前面加上static的結果是多少? 12/23 23:42
james732:樓上可以試試看就知道了 12/23 23:44
blackwindy:我剛剛就試過拉,我只是想問為什麼 12/23 23:48
ericinttu:為什麼要用static? 12/23 23:52
angleevil:為什麼大家都不看置底文??? 那可以幫助自己知識大跳躍 12/24 10:20
fbiwbi:這種題目連HTC都出一堆哩XDD 12/24 21:39
diabloevagto:看來我的問題應該是一直以為++放後面就是等到下一行 12/24 21:51
angleevil:你的問題是...你還不去搞懂大家為何強調第八誡 12/25 10:31
angleevil:實際上c/c++並沒有規定運算結果一定要由左到右. 12/25 10:33
angleevil:就算特意加上括號,優先權也不會變成由左道又去運算 12/25 10:34
diabloevagto:想通了!感謝指教 12/25 13:29