【发布时间】:2011-11-07 10:55:17
【问题描述】:
在我的 C++ 代码中,我有一个表达式,我将 unsigned long 整数乘以 int 以将结果分配给 unsigned long int。我收到“溢出返回值”的警告。我试图将 int 转换为 unsigned long 但它没有帮助。任何建议...
表达式是这样的-
uint64_t size = 0;
uint64_t value = getvalue();
int pageSize= getPageSize();
size = value*(uint64_t)pageSize;
【问题讨论】:
-
你能把你的代码贴在这里吗?
-
如果想要溢出并且您只想抑制警告,请尝试使用
unsigned int而不是普通的int。 -
溢出不是有意的,返回纯 int 的函数不能更改为返回 unsigned long 也不是返回值'size'。
-
我们在这里讨论的是哪个编译器和版本?这不适用于 gcc/g++ 4.5.2。我尝试使用 -Wall、-Wextra 和 -pedantic 以及 -Wstrict-overflow=N 的变体
-
这出现在静态代码检查工具中..
标签: c++ int overflow unsigned-integer