首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该如何纠正这个导致“值计算未使用”警告的代码?

我应该如何纠正这个导致“值计算未使用”警告的代码?
EN

Stack Overflow用户
提问于 2009-04-27 16:20:41
回答 9查看 7.6K关注 0票数 0

我有一个双精度数组,需要对该数组进行计算,然后找到该计算结果的最小值和最大值。这基本上就是我所拥有的:

代码语言:javascript
运行
复制
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++作为我的编译器。

以下是警告文本:

代码语言:javascript
运行
复制
cc1plus: warnings being treated as errors
foo.cc:<lineno of transmogrify call>: error: value computed is not used

编辑:我不理解反对票,但我现在已经把事情做好了。感谢大家抽出时间来帮助我。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-04-27 16:26:50

假设在循环外不需要result,那么可以在循环内声明result

代码语言:javascript
运行
复制
for( int i=0; i < sizeOfArray; ++i ) {
    double result = transmogrify( array[i] );
    ...
}
票数 4
EN

Stack Overflow用户

发布于 2009-04-27 16:32:00

我收到了一个警告,为result计算的值永远不会被使用,因为(理论上)可能不会选择if/else分支

这不可能是发出警告的原因,因为在if条件中也使用了result。即使没有任何分支被采用,仍然使用result来决定不应该采用它们。

票数 4
EN

Stack Overflow用户

发布于 2009-04-27 16:31:31

分别用DBL_MAX和DBL_MIN初始化myMin和myMax,并通过循环检查摆脱第一次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/794244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档