我有一个双精度数组,需要对该数组进行计算,然后找到该计算结果的最小值和最大值。这基本上就是我所拥有的:
double * array;
double result;
double myMin;
double myMax;
// Assume array is initialized properly...
for (int i = 0; i < sizeOfArray; ++i) {
result = transmogrify(array[i]);
if (i == 0) {
myMin = result;
myMax = result;
}
else if (result < myMin) {
myMin = result;
}
else if (result > myMax) {
myMax = result;
}
}我收到了一个警告,为result计算的值从未使用过,而且由于我们将所有警告都视为错误,因此无法编译。如何修复此代码以避免出现警告?我正在使用g++作为我的编译器。
以下是警告文本:
cc1plus: warnings being treated as errors
foo.cc:<lineno of transmogrify call>: error: value computed is not used编辑:我不理解反对票,但我现在已经把事情做好了。感谢大家抽出时间来帮助我。
发布于 2009-04-27 16:26:50
假设在循环外不需要result,那么可以在循环内声明result:
for( int i=0; i < sizeOfArray; ++i ) {
double result = transmogrify( array[i] );
...
}发布于 2009-04-27 16:32:00
我收到了一个警告,为
result计算的值永远不会被使用,因为(理论上)可能不会选择if/else分支
这不可能是发出警告的原因,因为在if条件中也使用了result。即使没有任何分支被采用,仍然使用result来决定不应该采用它们。
发布于 2009-04-27 16:31:31
分别用DBL_MAX和DBL_MIN初始化myMin和myMax,并通过循环检查摆脱第一次。
https://stackoverflow.com/questions/794244
复制相似问题