使用 C++ 时需要左值作为赋值错误的左操作数
lvalue required as left operand of assignment error when using C++
int main()
{
int x[3]={4,5,6};
int *p=x;
p +1=p;/*compiler shows error saying
lvalue required as left
operand of assignment*/
cout<<p 1;
getch();
}
要分配,您应该使用 p=p+1;
而不是 p+1=p;
int main()
{
int x[3]={4,5,6};
int *p=x;
p=p+1; /*You just needed to switch the terms around*/
cout<<p<<endl;
getch();
}
这只是一个错字(我猜)-
p+=1;
而不是 p +1=p;
是必需的。
顾名思义 lvalue
表达式应该是赋值运算符的左侧操作数。
当语句中有赋值运算符时,运算符的 LHS 必须是语言所称的 lvalue。如果运算符的 LHS 未评估为 lvalue,则无法将 RHS 中的值分配给 LHS。
您不能使用:
10 = 20;
因为 10
的计算结果不是 左值 。
您可以使用:
int i;
i = 20;
因为 i
的计算结果为 lvalue。
您不能使用:
int i;
i + 1 = 20;
因为 i + 1
的计算结果不是 左值 。
在您的例子中,p + 1
的计算结果不是 lavalue。因此,您不能使用
p + 1 = p;
简而言之,左值是可以出现在赋值左侧的东西,通常是变量或数组元素。
所以如果你定义int *p
,那么p
就是一个左值。 p+1
,这是一个有效的表达式,不是左值。
如果您尝试将 1 添加到 p
,正确的语法是:
p = p + 1;
如果您使用赋值运算符但使用方式或位置错误,
那么你会得到这种类型的错误!
假设您键入:
p+1=p;你会得到错误!!
你会得到同样的错误:
如果(ch>='a' && ch='z')
如您所见,我尝试在 if() 语句中分配!!!
我有多傻!!!对吗??
哈哈
其实我忘了给less then(<) sign
如果(ch>='a' && ch<='z')
出现错误!!
int main()
{
int x[3]={4,5,6};
int *p=x;
p +1=p;/*compiler shows error saying
lvalue required as left
operand of assignment*/
cout<<p 1;
getch();
}
要分配,您应该使用 p=p+1;
而不是 p+1=p;
int main()
{
int x[3]={4,5,6};
int *p=x;
p=p+1; /*You just needed to switch the terms around*/
cout<<p<<endl;
getch();
}
这只是一个错字(我猜)-
p+=1;
而不是 p +1=p;
是必需的。
顾名思义 lvalue
表达式应该是赋值运算符的左侧操作数。
当语句中有赋值运算符时,运算符的 LHS 必须是语言所称的 lvalue。如果运算符的 LHS 未评估为 lvalue,则无法将 RHS 中的值分配给 LHS。
您不能使用:
10 = 20;
因为 10
的计算结果不是 左值 。
您可以使用:
int i;
i = 20;
因为 i
的计算结果为 lvalue。
您不能使用:
int i;
i + 1 = 20;
因为 i + 1
的计算结果不是 左值 。
在您的例子中,p + 1
的计算结果不是 lavalue。因此,您不能使用
p + 1 = p;
简而言之,左值是可以出现在赋值左侧的东西,通常是变量或数组元素。
所以如果你定义int *p
,那么p
就是一个左值。 p+1
,这是一个有效的表达式,不是左值。
如果您尝试将 1 添加到 p
,正确的语法是:
p = p + 1;
如果您使用赋值运算符但使用方式或位置错误,
那么你会得到这种类型的错误!
假设您键入:
p+1=p;你会得到错误!!
你会得到同样的错误:
如果(ch>='a' && ch='z')
如您所见,我尝试在 if() 语句中分配!!!
我有多傻!!!对吗??
哈哈
其实我忘了给less then(<) sign
如果(ch>='a' && ch<='z')
出现错误!!