!!!!!!!!!!!C语言菜鸟问题!!!!!!!!!!!请高手帮忙!!!!!!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/21 14:44:16
#include <stdio.h>
void main()
{
void AAA(char *from , char *to);
char *a="I am a teacher.";
char *b="you are a student.";
printf("\nstring a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
AAA(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
}

void AAA(char *from , char *to)
{
while(( *to++ = *from++)!='\0');
}

谭浩强《C程序设计》(第三版)P256中说"*to++ = *from++"是先赋值再增值,然而++比=的优先级高,应该先增值再赋值才对,这怎么解释?

因为后缀++是先返回++之前的原值,在自增1

比如int a =3;
int b=a++;

那么现在b=3,a=4

所以*to++ = *from++这句相当于

*to = * from;
tp++;
from++;

所以就是先赋值,后自增

这样的写法实在是很害人
一句话做一件事足以
++ 来 ++去,到最后自己也会混淆,更何况别人

++在后,先赋值后增值,++在前,先增值后赋值

++在后,先赋值后增值,++在前,先增值后赋值
这是对的建议采用