C 中的 *f 和 (*f) 之间的差异



CppCheck (v1.72( 表示使用 (*f) 或仅使用 *f 时存在差异。本案

void test(float *f)
{
    float a = 0.0f;
    if(*f>a)
    {
        (*f) += 0.01f;
        if(*f<a) *f=a;
    }
}

cppCheck 说:"嵌套的'if'块中的相反条件会导致死代码块,其中

void test(float *f)
{
    float a = 0.0f;
    if(*f>a)
    {
        *f += 0.01f;
        if(*f<a) *f=a;
    }
}

让 cpp 检查快乐。到底有什么区别?

没有区别。理想情况下,cppcheck 应该在这两种情况下都警告你,因为你的代码不合逻辑。

但是,cppcheck并非万无一失。不要以为如果 cppcheck 没有显示任何问题,就没有任何问题。它只是另一个有用的工具,可以帮助发现可能未被发现的不良代码。

感谢您在stackoverflow上报告此问题。我已经在cppcheck的错误跟踪器上创建了一个关于这个问题的票证。

相关内容

  • 没有找到相关文章

最新更新