*pc++=*pa++;等效于*pc=*pa;pc++;pa++; 吗?
在看一个程序时不明白 *pc++=*pa++;的作用,有位大侠指点等效于 *pc=*pa;pc++;pa++;,我想应该是这样,为了试验,我写了一个小程序,发现小程序执行出错,请各位高手给指点、解惑。
出错提示为:“Lvalue required in function main ”
出错位置标在下面程序中。
请各位大侠多多指点,看看都错在什么地方。
void main()
{
int pc,pa,i;
pc=pa=i=1;
while( pc<=20 )
{
/* pc=pa;pc++;pa++; 这句能编译通过*/
/* pc++=pa++; 这句提示出错,出错提示为:“Lvalue required in function main ”*/
printf("pc= ",pc," pa= ",pa,"No. :" ,i++,"\n");
}
}
以上程序在TC2.0下编译出错
当初不明白*pc++=*pa++; 的源程序如下,此程序来自《数据结构(C语言版)》,作者 严蔚敏:
void MergeList_Sq( SqList La, SqList Lb ,SqList &Lc )
{
//已知顺序线性表La和Lb的元素按值非递减排列
//归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列
pa=La.elem;
pb=Lb.elem;
Lc.listsize=Lc.length=( ElemType*)malloc( Lc.Listsize *sizeof(ElemType) );
if(!Lc.elem)exit(OVERFLOW);//存储分配失败
pa_last=La.elem+La.length-1;
pb_last=Lb.elem+Lb.length-1;
while(pa<=pa_last && pb<=pb_last)
{
//归并
if(*pa<=*pb)*pc++=*pa++;
else *pc++=*pb++;
}
while(pa<=pa_last)*pc++=*pa++;
while(pb<=pb_last)*pc++=*pb++;
}//MergeList_Sq
[解决办法]
赋值表达式左边不能为表达式只能为变量!
[解决办法]