2016-07-05 55 views
-3

我在我的代码得到这个错误在编译 这里是代码错误:左值要求作为分配的左操作数,我得到这个错误是什么左值和右值,以及如何消除这种错误

#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: error: lvalue required as left operand of assignment

+0

这是一个重复的问题。请参阅:http://stackoverflow.com/questions/19973320/error-lvalue-required-as-left-operand-of-assignment-c – Sampath

+4

使用空格键会使原因更容易被发现。 – molbdnilo

回答

0

您的if(w==l&&h==l&&w=h)可能是错误的。由于运营商的优先级,它正在做if((w==l&&h==l&&w)=h)w==l&&h==l&&w部分创建一个临时值。临时总是rvalues,并且您不能将h分配给它。

我怀疑你的意思是写if(w==l&&h==l&&w==h),但是真的,最后的w==h有什么意义?如果wh都等于l,那么当然w等于h

0

由于操作者优先,(w==l && h==l && w=h)被视为((W ==升& &ħ==升& &瓦特)= H)。 第一部分是右值,因此您不能将它分配给h。你想写(w==l && h==l && w==h)

相关问题