如何摆脱整数溢出警告?

时间:2011-08-31 08:55:18

标签: c++ int overflow unsigned-integer

在我的C ++代码中,我有一个表达式,我将无符号长整数乘以int,将结果赋值给unsigned long int。我收到的警告是“溢出的返回值”。我试图将int转换为unsigned long,但它没有帮助。任何建议......

表达式是这样的 -

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

2 个答案:

答案 0 :(得分:0)

以下应该做的工作:

size = value*(uint64_t)(unsigned int)pageSize;

答案 1 :(得分:0)

您的工具可能有办法为此行代码设置例外。

如果该工具非常聪明,这是唯一的方法,因为确实存在溢出的风险(因为int可能无法容纳2^64-1)。