Re: [問題] while(*s++ = *t++ );疑問

看板C_and_CPP (C/C++)作者 (bdvstg)時間10年前 (2015/06/28 20:40), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串3/4 (看更多)
剛剛查了一下優先順序 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

06/28 20:42, , 1F
因為 postfix ++ 就是先做一份拷貝,然後做 prefix ++
06/28 20:42, 1F

06/28 20:43, , 2F
再把剛剛拷貝的那一份回傳回去
06/28 20:43, 2F

06/28 20:45, , 3F
while(*++s = *++t)
06/28 20:45, 3F

06/28 20:49, , 4F
感謝L大大 這樣說我有了解
06/28 20:49, 4F

06/28 21:33, , 5F
我覺得是要看 = 的運算結果@@
06/28 21:33, 5F

06/28 21:34, , 6F
所以我那時推文是拿s-1而非s
06/28 21:34, 6F

06/28 21:35, , 7F
因為 *(s-1) 剛好會是那串賦值的結果
06/28 21:35, 7F

06/29 22:03, , 8F
對耶! 我都快忽略 "=" 也會回傳値了XD
06/29 22:03, 8F
文章代碼(AID): #1LZ-iz7I (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1LZ-iz7I (C_and_CPP)