代码之家  ›  专栏  ›  技术社区  ›  floquet22

C中*f和(*f)的区别?

  •  0
  • floquet22  · 技术社区  · 9 年前

    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;
        }
    }
    

    使cppCheck高兴。到底有什么区别?

    2 回复  |  直到 9 年前
        1
  •  4
  •   Roddy    9 年前

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

    然而,cppcheck并非万无一失。不要认为如果cppcheck没有显示问题,那么就没有问题。它只是另一个有用的工具,可以帮助发现可能无法检测到的坏代码。

        2
  •  1
  •   orbitcowboy    9 年前

    感谢您在stackoverflow上报告此问题。我已经在cppcheck上创建了关于此问题的票据 bug tracker .