1
rndmBid=rand() % (sellPtr->sellPrice + (1.25*sellPtr->startPrice));

この行の何が問題になっていますか? (明らかに)以外はすべて整数1.25であり、コンパイラは次のようなエラーを返しますinvalid operands of types 'int' and 'double' to binary 'operator%'.

startPrice運が悪いので、 andrndmBidを double に変更してみました。助言がありますか?

4

4 に答える 4

4

算術式にa を導入するdoubleと、すべてが double に昇格/変換されます。したがって、整数に戻す必要があります。

rndmBid = rand() % static_cast<int>( ... );

(乱数が一様に分布しないことはご理解いただけたと思います。)

于 2013-04-28T21:45:39.360 に答える
2

rhs は double を返し%ますが、整数でのみ機能します。結果を整数にキャストします。

rand() % static_cast<int>(sellPtr->sellPrice + (1.25 * sellPtr->startPrice));
于 2013-04-28T21:45:29.173 に答える
2

(sellPtr->sellPrice + (1.25*sellPtr->startPrice)が double であるため、 の結果が(1.25*sellPtr->startPrice)double であるため、1.25は double です。結果を int にキャストすると、コンパイルされます。

rndmBid=rand() % static_cast<int>(sellPtr->sellPrice + (1.25*sellPtr->startPrice));
于 2013-04-28T21:47:14.507 に答える
0

double に int を追加しているため、結果は double になり、%演算子では使用できません。

これを修正するには、次のことを行う必要があります。

rndmBid=rand() % ((int)(sellPtr->sellPrice + (1.25*sellPtr->startPrice)));

これは、double が整数に収まるサイズよりも大きくない限り機能します。

于 2013-04-28T21:45:46.127 に答える