使用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();
}
当语句中有赋值运算符时,该运算符的LHS必须是该语言所称的左值。如果运算符的LHS未计算为左值,则RHS的值不能分配给LHS。
您不能使用:
10 = 20;
因为CCD_ 1不评估为左值。
您可以使用:
int i;
i = 20;
因为CCD_ 2确实评估为左值。
您不能使用:
int i;
i + 1 = 20;
因为CCD_ 3不评估为左值。
在您的情况下,p + 1
不会评估为拉瓦鲁。因此,您不能使用
p + 1 = p;
简单地说,左值是可以出现在赋值左侧的东西,通常是变量或数组元素。
所以如果你定义了int *p
,那么p
就是一个左值。p+1
是一个有效的表达式,它不是一个左值。
如果您试图将1添加到p
,正确的语法是:
p = p + 1;
要分配,应该使用p=p+1;
而不是10
0
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;你会得到错误!!
您将为此得到相同的错误:
if(ch>=‘a'&&ch='z')
正如你所看到的,我试图在if()语句中赋值
我真傻!!!对吗
哈哈
实际上我忘了给小于(<)的符号
if(ch>='a'&&ch<='z')
并得到了错误!!
这只是一个拼写错误(我想)-
p+=1;
而不是CCD_ 11。
顾名思义,lvalue
表达式应该是赋值运算符的左侧操作数。
相关文章:
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- 错误 C2679 二进制"<<":未找到采用类型为 'T' 的右侧操作数的运算符
- 错误:'operator>'不匹配(操作数类型为 'Student' 和 'Student'
- 如何摆脱逗号运算符的这个错误右操作数没有效果( wunsued 值)?
- c++ 错误:二进制"运算符+"类型"矩阵*"和"矩阵*"的操作数无效
- 使用堆栈编译错误的 C++ 反向行没有运算符匹配操作数
- 当我尝试构建此程序时,出现此错误:需要左键作为赋值的左操作数
- 错误:二进制">>":未找到采用类型为"const char [1] 的右操作数的运算符
- C++ 重载:[错误] 与'operator='不匹配(操作数类型为 'String' 和"字符串")
- 错误 C2679:二进制'<<':找不到采用类型 'overloaded-function' 的右侧操作数的运算符(或者没有可接受的转换)
- 我收到一个错误无效的操作数,类型为 const char [42] 和二进制"运算符+"的双倍数
- C++ 运算符不匹配操作数错误
- c++的cout操作数错误,类型错误
- 使用cin时,字符串上的右操作数错误
- OpenCV无效操作数错误
- 需要lvalue作为增量操作数错误
- C++无效操作数错误
- c++模板类冒泡排序操作数错误