c++这两个等效么?

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:04:59
int fun(int a[],int n)
{
int i,c=1;
for(i=1;i<n;i++)
{
if(a[i]!=a[i-1])
a[c++]=a[i];
}
return(c);
}

int fun(int a[],int n)
{
int i,c=1;
for(i=1;a[i];i++)
{
if(a[i]!=a[i+1])
c++;
}
return c;
}

怕大家累 再声明一下区别..
1.把for中i<n改成了a[i]
2.把a[c++]=a[i]改成了c++
3.把return没加()

谢谢~~
那是不是这里只能用 i<n呢?
还有是不是可以理解成需要返回数组a[c]时才需要用a[c++]=a[i],只需要返回c时用只用c++就可以了?
return 可以始终不带括号么?
辛苦了,,谢谢~~

1.for(i=1;a[i];i++) 等价于 for(i=1;a[i]!=0;i++)
2.a[c++]=a[i] 等价于 a[c] = a[i];c = c+1;
3.return(c) 等价于 return c

所以你的两个函数不等价,因为第二个函数中只要非零就可以满足条件一直循环

1.for(i=1;a[i];i++) 等价for(i=1;a[i]>0;i++)
2.a[c++]=a[i]等价 a[c] = a[i]; c++
3.return(c) 等价 return c

等价