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()
循环被执行。 - 然后
s1
和s2
递增。 - 当
s2
到达字符串末尾时,*s2
返回赋给s1
的'\0'
>。*s1=*s2
。现在这个表达式也返回一个值,它是'\0'
并且while('\0')
循环终止。
关于c - 指针条件 while(*s1++=*s2++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19995338/