2012-10-02 58 views
0

我已經看過類似的問題,但作爲一個總新手在這,他們沒有幫助太多,當我試圖運行我的最終if語句時碰到這個錯誤,我怎樣才能讓我的cout語句更清晰?它的目的是輸出它可以接受的垃圾袋數量,用戶試圖給它的垃圾袋數量,以及如果不能把所有垃圾都放在一邊,將剩下多少袋子。左值操作數需要作爲左操作數通過if語句賦值錯誤

while((reg < 50) && (met< 20) && (glass < 20)) 
{ 
reg=reg+reg; met=met+met; glass=glass+glass; 
cout<< " I have enough "<< endl; 


if(reg+=reg > 50){ 
cout<< "I can only accept " << 50 - (reg+=reg) << "of your " << (reg+=reg)<<" regular  bags of garbage, I'll leave the other " << 50 - (reg+= reg)<< " I'll leave the other " << reg- (50 - reg+=reg)<< endl; 
} 
+0

你想做什麼?在聲明中使用賦值運算符(並多次)並不是很好的風格。在多重任務的情況下,如果甚至允許行爲,我不認爲行爲是定義的。 – ApplePie

+1

你能描述一下代碼應該做什麼嗎?我確信你不想在每次打印某些東西時使「reg」的值翻倍(這就是所有'reg + = reg'表達式所做的);但很難確定它應該進行測試和打印。 –

+0

我剛剛弄清楚我最初做錯了什麼,我重複了兩行代碼,很愚蠢的錯誤。 –

回答

1
50 - reg += reg; 

operator+=具有比operator-優先級低。上述說法解釋爲:

(50 - reg) += reg; 

哪個不起作用。你可能想要:

50 - (reg += reg); 
+0

啊我想我明白了,謝謝! –

相關問題