#include<stdio.h>
int main()
{
char a[80],b[10], *s1,*s2;
s1=a;
s2=b;
printf("input s1:\n");
gets(s1);
printf("input s2:\n");
gets(s2);
while(*s1)
{
s1++;
}
while(*s2)
{
//*(s1++) = *(s2++);
//*s1++ = *s2++;
(*s1)++ = (*s2)++;
}
*s1='\0';
printf("result is %s",a);
}
在上面的第二个while中的三行代码是独立的,我的问题是,为什么注释其中两行后运行其中一行得到的结果是一样的,编译环境是Gcc 4.4.7
++和*同级,右结合。
于是++先运算,给s1(s2)加上“用完要加哦”的状态。
然后进行运算,取出,当s1(s2)完成运算之后+1。
两种都是++先运算。然而++的意义就在于此,并不是+1,而是加上“用完要加哦”的状态。
回答可能不科学,但通俗易懂
最下面的那一个//第三个
用括号进行先取位,然后++作用的是取出来之后的值。