在我的C ++代码中,我有一个表达式,我将无符号长整数乘以int,将结果赋值给unsigned long int。我收到的警告是“溢出的返回值”。我试图将int转换为unsigned long,但它没有帮助。任何建议......
表达式是这样的 -
uint64_t size = 0;
uint64_t value = getvalue();
int pageSize= getPageSize();
size = value*(uint64_t)pageSize;
答案 0 :(得分:0)
以下应该做的工作:
size = value*(uint64_t)(unsigned int)pageSize;
答案 1 :(得分:0)
您的工具可能有办法为此行代码设置例外。
如果该工具非常聪明,这是唯一的方法,因为确实存在溢出的风险(因为int
可能无法容纳2^64-1
)。