[問題] 為什麼 *size++ 和 *size+=1 結果不一樣

看板C_and_CPP (C/C++)作者 (動手)時間15年前 (2011/01/20 00:13), 編輯推噓1(107)
留言8則, 5人參與, 最新討論串1/1
今天用DEV寫了一段的C的程式 發現奇怪的地方 這是我原始的程式碼 #include <stdio.h> void f(int *i) { *i+=1; } int main(void) { int i=0; f(&i); printf("%d",i); return 0; } 結果印出 1 然後我把程式改一個地方:把 *i+=1 改成 *i++ 結果印出 0 小弟以為 i++ 和 i+=1 是一樣的 但結果並不是這樣 請各位大大賜教!! 感激不盡!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.42.55

01/20 00:25, , 1F
我想是優先權問題:http://ppt.cc/SVr,
01/20 00:25, 1F

01/20 00:26, , 2F
可以看到 ++ > * > +=
01/20 00:26, 2F

01/20 00:27, , 3F
要用++的話,就要寫 (*i)++;
01/20 00:27, 3F

01/20 00:31, , 4F
有什麼理由你把完成兩樣不同工作的程式碼擠在一起? 不
01/20 00:31, 4F

01/20 00:31, , 5F
懂也是理所當然的...
01/20 00:31, 5F

01/20 00:39, , 6F
感謝樓上兩位大大 我懂了!!
01/20 00:39, 6F

01/20 02:38, , 7F
改成++*i也會印出1
01/20 02:38, 7F

01/20 16:03, , 8F
如果priority記不住 就善用括號吧
01/20 16:03, 8F
文章代碼(AID): #1DDmsKYi (C_and_CPP)
文章代碼(AID): #1DDmsKYi (C_and_CPP)