2

私の C++ コードには、unsigned long integer を int に乗算して結果を unsigned long int に代入する式があります。「戻り値がオーバーフローしました」という警告が表示されます。int を unsigned long にキャストしようとしましたが、役に立ちませんでした。助言がありますか...

表情はこんな感じ~

uint64_t size = 0;
uint64_t value = getvalue();
int pageSize= getPageSize();
size = value*(uint64_t)pageSize;
4

2 に答える 2

0

以下は仕事をするべきです:

size = value*(uint64_t)(unsigned int)pageSize;
于 2011-08-31T09:25:55.083 に答える
0

ツールには、おそらくこのコード行に例外を設定する方法があります。

ツールが本当に賢い場合、これが唯一の方法です。なぜなら、ここで実際にオーバーフローのリスクがあるからです ( が に対応しintない可能性があるため2^64-1)。

于 2011-08-31T09:38:18.023 に答える