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)

相關問題