2013-02-20 24 views
-3

這是我的代碼開始的地方。在代碼的最底部,我將詳細說明錯誤點。我在Dev C++中發現一個錯誤(類型`const double'的無效操作數'和二元運算符<<'的<未知類型>')

#include <iostream> 
#include <iomanip> 
#include <cmath> 

using namespace std; 

int main() 
{ 
    //declare variables 

int usedWater = 0; 
int prevReading = 0; 
int currReading = 0; 
const double WATER_RATE = .007; 
const double MIN_CHARGES = 16.67; 
double totalCharges = 0.0; 

cout <<"enter the current reading: "; 
cin >> currReading; 
cout <<"enter the previous reading: "; 
cin >> prevReading; 



usedWater = currReading - prevReading; 

totalCharges = usedWater * WATER_RATE; 

if(totalCharges < MIN_CHARGES) 
{ 

totalCharges = MIN_CHARGES << endl; 
cout << "total charges: " << MIN_CHARGES; 

} 
else 
{ 
cout << "Total Charges : " << totalCharges; 

} 

cout << "total Charges : " << totalCharges; 
cout << "Used Water : " << usedWater; 

system ("pause"); 

return 0; 
} 

36行是我得到錯誤的地方。這:(totalCharges = MIN_CHARGES < < endl;)
我沒有看到任何錯別字。或者可能是一些錯誤的詞。

+1

的'<< endl'掛最終沒有觸發任何警鐘? – nneonneo 2013-02-20 02:46:13

+0

是導致問題的原因嗎? – RickTheSlick 2013-02-20 02:50:43

+0

是的。是的。 – Johnsyweb 2013-02-20 03:03:01

回答

2
totalCharges = MIN_CHARGES << endl; 

不知道你想要什麼與以acheive,但我懷疑它會更好,如:

totalCharges = MIN_CHARGES; 

你的當前行試圖做的是設置totalCharges到的值MIN_CHARGES左移endl位。這可能不會有好下場的,即使編譯器允許它:-)


而且,順便說一句,你大概可以替換單線一大塊代碼的:

totalCharges = std::min (MIN_CHARGES, usedWater * WATER_RATE); 

您可能還想在這些cout <<語句中的大部分末尾添加換行符,以便您的輸出不會集中在一行上。

而正確的做法通常是'\n'而不是std::endl,因爲後者強制沖刷可能導致性能下降(儘管在這個特定情況下可能不明顯)。

+0

以endl關閉工作,我不明白爲什麼。好吧。它現在有效。 – RickTheSlick 2013-02-20 02:53:29

+1

@RickTheSlick,至於爲什麼,看我的段落開始「你目前的線......」。 – paxdiablo 2013-02-20 02:56:10

+0

@RickTheSlick:你希望做什麼*** totalCharges = MIN_CHARGES << endl;'要做什麼?我認爲這是無意的! – Johnsyweb 2013-02-20 03:02:41

1

<< endl不在這個任務屬於:

totalCharges = MIN_CHARGES; 

std::endl是添加新行和沖洗流的流處理器。 MIN_CHARGES是一個doubleconst值,所以這樣一個按位左移操作使零感。

你大概的意思是:

if (totalCharges < MIN_CHARGES) 
{ 
    totalCharges = MIN_CHARGES; 
} 

cout << "Total Charges : " << totalCharges; 
相關問題