正如此处的答案所建议的那样,我打开-Wbad-function-cast
以查看我的代码是否有 gcc 可以捕获的任何不良行为,它出现了以下示例:
unsigned long n;
// ...
int crossover = (int)pow(n, .14);
(这里不是关键crossover
;int
它可能是unsigned long
并且消息是相同的)。
这似乎是一个非常普通且有用的演员表示例。为什么这是有问题的?否则,是否有理由保持打开此警告?
我通常喜欢设置很多警告,但我无法将注意力集中在这个用例上。我正在处理的代码是大量数字化的,并且很多时候为了满足所涉及算法的不同需求,需要将事物从一种类型转换为另一种类型。