2012-04-17 105 views
0

我正在一個date validation(MM/DD/YYYY)和收到這個錯誤:DD/MM/YYYY輸入驗證

error: lvalue required as left operand of assignment

在線路:9(if (Y%4=0) { return true; })運行此片的代碼?

bool valDate(int M, int D, int Y) 
{ 
    if (! (1<=M and M<=12)) return false;  
    if (! (1<=D and D<=31)) return false; 
    if ((D==31) and (M==2 or M==4 or M==6 or M==9 or M==11))   
     return false; 
    if ((D==30) and (M==2)) return false; 
    if ((M==2) and (D==29)) { 
     if (Y%4=0) { return true; }   
     else { return false; }   
     if ((Y%100==0) and (Y%400==0)) { return true; } 
     else { return false; } 
    } 
} 

任何人都可以解釋錯誤(以及我做錯了什麼)嗎?乾杯!!

+0

&&和||也許? – tmpearce 2012-04-17 23:35:57

+3

@tmpearce:在現代版本的C++中,'和'和'or'是有效的關鍵字,不同的拼寫方法'&&'和'||'。 – 2012-04-17 23:36:45

+0

@GregHewgill啊,不錯 - 是那些短路?我應該考慮在某些時候升級編譯器。 – tmpearce 2012-04-17 23:38:06

回答

5
if (Y%4=0) { return true; }   

應該是:

if (Y%4==0) { return true; }   

左值是指某一位置在存儲器中的表達。 Y%4是一個右值 - 從語義上講,它不能被分配。

+0

哦,是的!愚蠢的我,完全被忽視。謝謝!仍然有興趣知道該錯誤消息究竟意味着什麼。乾杯!! – MacUsers 2012-04-17 23:37:20

+0

賦值的左操作數是Y%4,它是一個r值 - 它屬於賦值運算符的右邊。 l值是指存儲器中的某個位置(例如變量,指針或引用)的某個表達式。 – mgiuffrida 2012-04-17 23:53:53

+1

@MacUsers:錯誤信息意味着你正在嘗試*賦值*(記住'='平均賦值)到'Y%4'。由於'Y%4'是計算的結果,因此在C++中稱爲「右值」(右值)。當你分配某些東西時,你需要在左側賦值「左值」(左值)。 – 2012-04-17 23:54:10