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

Posted

技术标签:

【中文标题】C语言中*f和(*f)的区别?【英文标题】:Difference between *f and (*f) in C? 【发布时间】:2016-02-15 17:30:11 【问题描述】:

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 开心。到底有什么区别?

【问题讨论】:

没有区别。还有什么? 是的,为什么没有 cppcheck 在这里会有所作为? 因为在第一个if 你问*f &gt; a 而在嵌套(第二个)if 你问的是相反的——可能CppCheck 看不到*f 被修改了 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

感谢您在 *** 上报告此问题。我在 cppcheck 的 bug tracker 上创建了一张关于这个问题的票。

【讨论】:

以上是关于C语言中*f和(*f)的区别?的主要内容,如果未能解决你的问题,请参考以下文章

c语言里一般都说引用而不说使用,引用和使用有啥区别呢

c语言 %d %f %lf %d可表示的最大和最小范围是多少?超过了范围 计算机怎么显示

C语言中++c与c++有啥区别?

C语言指针 静态变量的调用

C语言中输入函数等待输入和结束输入

c语言结构体的问题