[問題] loop 終止寫法

看板C_and_CPP (C/C++)作者 (Up2u)時間10年前 (2016/05/08 17:18), 編輯推噓3(308)
留言11則, 7人參與, 最新討論串1/1
1:字串複製 void strcpy(char *s, char *d) { for (; *d = *s; s++, d++) ; } 請問字串結尾是/0為什麼可以當終止值呢 我試了一下NULL也可以 for (; '/0'; s++, d++) ; 但我這樣寫就不行 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.227.244 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1462699119.A.441.html

05/08 17:21, , 1F
怪怪的 *d = '/0' 這樣嗎?
05/08 17:21, 1F

05/08 17:32, , 2F
剛剛有好心板友提醒我\0打錯 哈哈
05/08 17:32, 2F

05/08 17:33, , 3F
for (; '\0' ; s++, d++) 這樣寫就會終止
05/08 17:33, 3F

05/08 17:39, , 4F
因為 a = b 會回傳 b
05/08 17:39, 4F

05/08 17:40, , 5F
但是這用法沒看過 字串尾算 false 嗎?
05/08 17:40, 5F

05/08 17:41, , 6F
訂正 字串尾 -> "\0"
05/08 17:41, 6F

05/08 18:54, , 7F
'\0' 就是 0
05/08 18:54, 7F

05/08 18:59, , 8F
正確來說 '\0' 是 (char)0
05/08 18:59, 8F

05/08 19:00, , 9F
但不管是哪個都會在邏輯運算時 coerce 成 false
05/08 19:00, 9F

05/08 19:02, , 10F
這寫法很邪魔歪道,還不錯
05/08 19:02, 10F

05/08 23:43, , 11F
阿你持續條件永遠為false當然終止阿
05/08 23:43, 11F
文章代碼(AID): #1NBmHlH1 (C_and_CPP)
文章代碼(AID): #1NBmHlH1 (C_and_CPP)