[英]Newbie error with “expression must have integral or enum type”
保持冷靜……我學習C ++已有5個星期。 我已經挖了挖,無法弄清楚為什么Visual Studio Express(和在線編譯器)會為此拋出錯誤。
請注意,為了清楚起見,我包括了所有聲明-大多數聲明用於不同的代碼部分。 出現錯誤的行是這一行: newsharePrice = perchangeEnd * profitLoss << '\\n';
我得到的錯誤是c2296,左操作數的類型為double。 我不知道為什么它不喜歡這樣...我乘其他雙打就好了。
double numberShares,
sharePrice,
profitLoss,
profitGain,
commissionPaid,
commissionCost,
sharesCost,
totalshareCost,
newtotalshareCost,
newcommissionCost,
newsharePrice;
double perChange;
double perchangeEnd;
const int minVALUE = 1;
const int maxVALUE = 100;
int seed = time(0);
srand (seed);
perChange = (rand() % (maxVALUE - minVALUE + 1)) + minVALUE;
cout << perChange << '\n';
perchangeEnd = perChange / 100;
int flip = rand() % 2 + 1;
if (flip == 1)
profitLoss = 1;
else
profitLoss = -1;
newsharePrice = perchangeEnd * profitLoss << '\n';
newsharePrice = newsharePrice + sharePrice;
cout << newsharePrice << '\n';
newtotalshareCost = numberShares * newsharePrice;
cout << "You've now paid " << newtotalshareCost << " for your shares." << '\n';
newcommissionCost = newtotalshareCost * commissionRate;
cout << "The new amount of commission for this is " << newcommissionCost << " ." << '/n';
好吧,只需閱讀有問題的行:
newsharePrice = perchangeEnd * profitLoss << '\n';
// ▲▲▲▲▲▲▲▲
那<< '\\n'
不是乘法的一部分; 一份意大利面從失敗cout
線?
在這種情況下,編譯器別無選擇,只能假設您嘗試執行按位左移操作,該操作不能在double
上執行; 僅在整數上。
現在,可以修復編譯錯誤,但您的域錯誤仍然存在(今天是星期五,不是嗎?)。 為什么股價波動會以任何方式影響您的佣金? 您已經有了職位。 您還可以以浮點數精度衡量股份數量。 盡管在某些情況下您的股份數量可能不均勻,但這種情況很少發生。 您是真的考慮到這一點還是只是錯誤地使用double? 大多數系統會將股份數量視為整數。 此外,您可以設置負頭寸,畢竟,所有的計算都將帶來負數佣金! 經紀人不同意;)。 最后但並非最不重要的美國佣金很少以交易價值的百分比表示。 通常以每股美分(或大多數零售經紀商的固定交易成本)的形式收取費用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.