错误:需要左值作为赋值的左操作数,我收到此错误啥是左值和右值以及如何删除此错误

Posted

技术标签:

【中文标题】错误:需要左值作为赋值的左操作数,我收到此错误啥是左值和右值以及如何删除此错误【英文标题】:error: lvalue required as left operand of assignment, I got this error what is lvalue and rvalue and how to remove this error错误:需要左值作为赋值的左操作数,我收到此错误什么是左值和右值以及如何删除此错误 【发布时间】:2016-07-05 05:49:28 【问题描述】:

编译时我的代码中出现此错误 这是代码

#include <iostream>
using namespace std;
int main()

    int l,n,w,h;
    cin>>l>>n;
    while(n--)
        cin>>w>>h;
        if(w>l||h>l)
            cout<<"CROP IT"<<endl;
        if(w==l&&h==l&&w=h)
            cout<<"ACCEPTED"<<endl;
        if(w<l||h<l)
            cout<<"UPLOAD ANOTHER"<<endl;
    

还有错误

11:22: 错误:需要左值作为赋值的左操作数

【问题讨论】:

这是一个重复的问题。请参考:***.com/questions/19973320/… 使用空格键会更容易发现原因。 【参考方案1】:

您的if(w==l&amp;&amp;h==l&amp;&amp;w=h) 可能有误。由于运算符优先级,它正在执行if((w==l&amp;&amp;h==l&amp;&amp;w)=h)w==l&amp;&amp;h==l&amp;&amp;w 部分创建一个临时值。临时值总是右值,你不能给它分配h

我怀疑你是想写if(w==l&amp;&amp;h==l&amp;&amp;w==h),但实际上,最后一个w==h 有什么意义?如果wh 都等于l,那么w 肯定等于h

【讨论】:

【参考方案2】:

由于运算符优先级,(w==l &amp;&amp; h==l &amp;&amp; w=h) 被视为 ((w==l && h==l && w) = h)。 第一部分是右值,因此不能将其分配给h

你肯定想写(w==l &amp;&amp; h==l &amp;&amp; w==h)

【讨论】:

以上是关于错误:需要左值作为赋值的左操作数,我收到此错误啥是左值和右值以及如何删除此错误的主要内容,如果未能解决你的问题,请参考以下文章

左值需要作为 c 中赋值错误的左操作数

使用 C++ 时需要左值作为赋值错误的左操作数

左值需要作为赋值的左操作数(递增引用的变量)C++

左值需要作为赋值的左操作数

需要左值作为 ios 中赋值的左操作数

尝试对链表进行排序时出现左值错误