我用lenB作为参数之一创建了一个函数。当我尝试时在同一函数中
for(i=lenB*2;i<lenA=lenB;i++)
我收到错误"左键需要作为赋值的左操作数" 这是什么意思,我该如何解决?
int alternate_merge(int A[],int B[],int C[],int lenA,int lenB){
int i,j,k;
for(i=0;i<lenB*2;i=i+2){
for(j=0;j<lenB;j++){
C[i]=A[j];
C[i+1]=B[j];
break;
}
}
k=lenB*2;
for(i=lenB*2;i<lenA=lenB;i++){
for(j=lenB+1;j<lenA;j++){
C[i]=A[j];
break;
}
}
return C[lenA+lenB];
}
i<lenA=lenB
(由于运算符优先级(计算为
(i<lenA)=lenB
零件
(i<lenA)
生成一个不存储在任何变量中的布尔结果。所以下一步是
"布尔值" = lenB
您尝试将 int 分配给布尔值的位置。那是不可能的。
有关运算符优先级的详细信息,请参阅:https://en.cppreference.com/w/c/language/operator_precedence
错误"左值需要作为赋值的左操作数">基本上意味着您无法将值分配给不是左值的东西。在非常一般的术语中,左值是命名变量或内存位置。
例子:
int a = 10; // Legal as a is an lvalue
1 = a; // Illegal as 1 isn't an lvalue
int b = a; // Legal as b is an lvalue
(a == b) = a; // Illegal as (a == b) isn't an lvalue but a boolean value
int *p;
p = &b; // Legal as p is an lvalue
*p = a; // Legal as *p is an lvalue