[问题] loop 终止写法

楼主: bjk (Up2u)   2016-05-08 17:18:36
1:字串复制
void strcpy(char *s, char *d)
{
for (; *d = *s; s++, d++) ;
}
请问字串结尾是/0为什么可以当终止值呢
我试了一下NULL也可以
for (; '/0'; s++, d++) ;
但我这样写就不行
作者: chuegou (chuegou)   2016-05-08 17:21:00
怪怪的 *d = '/0' 这样吗?
楼主: bjk (Up2u)   2016-05-08 17:32:00
刚刚有好心板友提醒我\0打错 哈哈for (; '\0' ; s++, d++) 这样写就会终止
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-08 17:39:00
因为 a = b 会回传 b但是这用法没看过 字串尾算 false 吗?订正 字串尾 -> "\0"
作者: bibo9901 (function(){})()   2016-05-08 18:54:00
'\0' 就是 0
作者: uranusjr (←這人是超級笨蛋)   2016-05-08 18:59:00
正确来说 '\0' 是 (char)0但不管是哪个都会在逻辑运算时 coerce 成 false
作者: stupid0319 (征女友)   2016-05-08 19:02:00
这写法很邪魔歪道,还不错
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-05-08 23:43:00
阿你持续条件永远为false当然终止阿

Links booklink

Contact Us: admin [ a t ] ucptt.com