[問題] 為什麼 while (*s++ = *t++) 是字串複製?

看板C_and_CPP作者 (反及閘萬用閘)時間13年前 (2010/10/06 14:32), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/2 (看更多)
我在 http://www.erpsas.org/?action-blogdetail-uid-58-id-36 其中一段落讀到 while (*s++ = *t++) 的意思是字串複製 但我想不通為什麼 請教各位大大的意見 我想不通的有幾個: 1. ( a = b ) 這樣的指派指令 是會傳回 true 嗎? 2. 哪什麼時候 (*s++ = *t++) 會傳回 fasle 呢? 為什麼呢? 感謝大家看完 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.168.166

10/06 14:36, , 1F
你可以試試看 char a, b = 'b'; printf("%c", (a = b));
10/06 14:36, 1F

10/06 14:38, , 2F
及char a,b=0; printf("%s", (a=b) ? "true" : "false");
10/06 14:38, 2F

10/06 14:43, , 3F
因為 C-Style 字串的結尾,數值剛好是0代表 false
10/06 14:43, 3F

10/06 17:38, , 4F
結尾字元'\0' 的ASCII值剛好是0 參考 http://ppt.cc/tP2b
10/06 17:38, 4F

10/07 20:56, , 5F
謝謝各位解答! 小弟繼續研究~
10/07 20:56, 5F
文章代碼(AID): #1Ch1WGmI (C_and_CPP)
文章代碼(AID): #1Ch1WGmI (C_and_CPP)