簡體   English   中英

新手錯誤,“表達式必須具有整數或枚舉類型”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM