[問題] n++問題

看板C_and_CPP (C/C++)作者 (Gavin Lee)時間10年前 (2016/01/19 17:27), 編輯推噓6(6018)
留言24則, 14人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) LINUX & WINDOWS 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) No 問題(Question): 請問,當我寫 count = count++; 時,count 本身值不會改變,這是為什麼呢?謝謝 餵入的資料(Input): NO 預期的正確結果(Expected Output): 1 錯誤結果(Wrong Output): 0 程式碼(Code):(請善用置底文網頁, 記得排版) #includ <stdio.h> int main() { int count = 0; count = count++; printf("%d", count); // it will print 0?? } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.218 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1453195629.A.211.html

01/19 17:32, , 1F
無義意的code不要去想他好了
01/19 17:32, 1F

01/19 17:36, , 2F
置底13戒看一下
01/19 17:36, 2F

01/19 17:38, , 3F
小明立志要跟昨天的小明一樣好
01/19 17:38, 3F

01/19 18:05, , 4F
不好意思,我看到了十三戒了,謝謝,我錯了,sorry
01/19 18:05, 4F

01/19 19:29, , 5F
count = ++count;
01/19 19:29, 5F

01/19 20:03, , 6F
別花時間在無意義的事情上
01/19 20:03, 6F

01/20 00:47, , 7F
WTF....這個寫法真有創意!?
01/20 00:47, 7F

01/20 17:34, , 8F
想了一下覺得 wtf 這啥
01/20 17:34, 8F

01/21 06:08, , 9F
woo that's fantastic的意思
01/21 06:08, 9F

01/21 10:49, , 10F
因為編譯器會把這段code 當成
01/21 10:49, 10F

01/21 10:50, , 11F
Int tmp = count
01/21 10:50, 11F

01/21 10:50, , 12F
count++
01/21 10:50, 12F

01/21 10:50, , 13F
Count = tmp
01/21 10:50, 13F

01/21 11:37, , 14F
背前置和後置最無聊了, 不確定就用括弧, 清楚明瞭
01/21 11:37, 14F

01/21 11:37, , 15F
上班寫這種code可以懷疑是想挖坑給自己/別人跳
01/21 11:37, 15F

01/21 11:55, , 16F
樓上&樓樓上:這邊並不是求值先後順序的問題
01/21 11:55, 16F

01/21 11:56, , 17F
而是賦值順序未定義,即使加上括號其結果仍然是未定義
01/21 11:56, 17F

01/21 16:23, , 18F
我今天在同事那邊試過 是 1 (我原本期望是 0 )
01/21 16:23, 18F

01/21 16:24, , 19F
環境是 VC2012 (原本想要弄惡搞程式碼XDD)
01/21 16:24, 19F

01/21 16:27, , 20F
找時間來測測其他編譯器會怎麼處裡好了XD
01/21 16:27, 20F

01/21 17:25, , 21F
以前在學校還滿常見這種寫法 而且妙的是不會錯
01/21 17:25, 21F

01/21 17:26, , 22F
想來應該很多人就此養成壞習慣 :|
01/21 17:26, 22F

01/23 06:56, , 23F
只能說樓主很有創意..
01/23 06:56, 23F

01/23 13:10, , 24F
這自己用編譯器生出組合語言來看就知道了
01/23 13:10, 24F
文章代碼(AID): #1MdW5j8H (C_and_CPP)
文章代碼(AID): #1MdW5j8H (C_and_CPP)