看板 C_and_CPP 關於我們 聯絡資訊
剛剛查了一下優先順序 Suffix increment > Indirection (dereference) > Direct assignment ++ (第2個) > *(第3) > =(第16) 所以我想問一下為什麼不是++先做 而是取值和賦値先 也就是為什麼不是底下這樣 while (*t) { s++; t++; *s=*t } 另外我對那種多個的Condition判斷疑惑很久了 (不知道有沒有術語,想下關鍵字查一下) while(*s++ = *t++) 是要看*s的値,還是*t的値 (以程式邏輯來猜應該是*t) (原文中兩種都有人回) 還是要看 賦値的回傳結果? 另外我看過3個的... 類似底下這樣 while(*s++ = *t++ = *q++) 不過那時候不影響我讀code就不管它 ※ 引述《BitTorrent (螳勃唬)》之銘言: : 請問一下 : strcpy 中 : while( *s++ = *t++); : 可以copy char arrays : 想請問一下可是++ 優先權 不是大於* : 所以照理講第一個不會被複製到阿? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.176.98 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1435495229.A.1D2.html
LiloHuang: 因為 postfix ++ 就是先做一份拷貝,然後做 prefix ++ 06/28 20:42
LiloHuang: 再把剛剛拷貝的那一份回傳回去 06/28 20:43
testPtt: while(*++s = *++t) 06/28 20:45
bdvstg: 感謝L大大 這樣說我有了解 06/28 20:49
Frozenmouse: 我覺得是要看 = 的運算結果@@ 06/28 21:33
Frozenmouse: 所以我那時推文是拿s-1而非s 06/28 21:34
Frozenmouse: 因為 *(s-1) 剛好會是那串賦值的結果 06/28 21:35
bdvstg: 對耶! 我都快忽略 "=" 也會回傳値了XD 06/29 22:03