while("0")为什么会跳出
以下的while为什么又会跳出呢,因为以前是写PHP的不太理解,赋值不是一直会为真的吗?
请输入代码/ strcpy: 将 t 复制到s;指针版 3 /
void strcpy(char *s, char *t)
{
while (*s++ = *t++) ;
}
这个while判断的是s++ = t++表达式的值
对,没错,C语言里的表达式也是有值的,比如逗号表达式的值1, 2, 3的值等于最右边数的值即3
这个赋值表达式的值也是等于赋值完后的左值即s++,也即当前s的值
所以当t到达末尾的时候会读到字符串结尾的0,即t为0,被赋值的s也是0,while里面是个0自然会跳出循环
另外'0'的值为0,所以while('0')会跳出循环
另外while("0")不会跳出循环,因为字符串常量的值实际山是它的地址,字符串常量的地址都不会是0
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。