在遵循 C 程序时查找错误 - 如何纠正

  • 本文关键字:错误 何纠正 查找 程序 c
  • 更新时间 :
  • 英文 :


我用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

最新更新