int main()
{
char str1[] = "Overflow";
char str2[] = "Stack";
char *s1 = str1, *s2=str2;
while(*s1++ = *s2++)
printf("%s", str1);
return 0;
}
当这个条件被打破时
(while(*s1++ = *s2++))
请解释一下逻辑
输出是
*s1++
,在这个变量中,*
优先级高于++
。
在下面的代码中,
while(*s1++ = *s2++); //There should be a semicolon.Your code does not has.
-
*s1 = *s2
首先被评估。
- C 中几乎每个表达式都会返回一个值。所以
*s1 = *s2
返回一个值,该值是第一个字符,并且显然不为空。while()
循环被执行。
- Then
s1
and s2
增加。
- When
s2
到达字符串末尾,*s2
回报'\0'
被分配给s1
. *s1=*s2
。现在这个表达式还返回一个值'\0'
and while('\0')
循环终止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)