看板 C_and_CPP 關於我們 聯絡資訊
程式碼(Code):(請善用置底文網頁, 記得排版) int arr[] = {6, 7, 8, 9, 10}; int *ptr = arr; *ptr++ = *ptr++ + 123; *(++ptr) = *(++ptr) + 123; int *p = arr; int *q = arr + sizeof(arr)/sizeof(*arr); while( p != q ) cout << *p++ << " "; // 129 7 8 9 133 關於這段程式碼中 *ptr++ = *ptr++ + 123; 請問有版上的大大知道這行的底下運作嗎? 我的問題是不懂為什麼前面的increment沒有影響後面的dereference結果 (或是後面的increment沒有影響前面) 為什麼這行右邊的是拿6的值, 左邊也是更新6的位置 最後才把位置更新到8 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.226.188.141
scwg:置底第八戒: ptr 在同個 expression 內改值兩次, 行為未定義 03/06 04:31
steve1012:為啥要這樣寫..分兩三行就好了... 03/06 07:50
diabloevagto:這什麼鬼程式 03/06 21:53
samuelcdf:又是哪間公司考的白癡題目? 最好是上班敢這樣寫 03/07 09:58
samuelcdf:想法同2F... 分兩三行就好了. C code短又不代表機器碼一 03/07 09:59
samuelcdf:定短... 寫這種沒啥閱讀性的Code害人害己 03/07 10:00
rnbjacky:真的是阿鬼程式XD 我要的答案應該就是1F的 就是未定義 03/07 13:58
rnbjacky:謝謝! 03/07 13:58