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

     2023-02-16     73

关键词:

【中文标题】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 上创建了一张关于这个问题的票。

【讨论】:

在 Python 中,f.readlines() 和 list(f) 有啥区别

】在Python中,f.readlines()和list(f)有啥区别【英文标题】:InPython,whatisthedifferencebetweenf.readlines()andlist(f)在Python中,f.readlines()和list(f)有什么区别【发布时间】:2014-07-2010:13:38【问题描述】:从Python2Tutorial和Python3Tutorial来看,第7.2.1... 查看详情

F# 中模块和命名空间之间的区别

】F#中模块和命名空间之间的区别【英文标题】:DIfferencebetweenModulesandNamespacesinF#【发布时间】:2011-06-2600:46:59【问题描述】:我在理解F#中的模块和命名空间之间的确切区别以及使用其中一个或另一个时遇到了问题。好吧,它们... 查看详情

调用 C_F_POINTER 时 Fortran 指针和 Fortran 可分配的区别

】调用C_F_POINTER时Fortran指针和Fortran可分配的区别【英文标题】:DifferenceinFortranpointerandFortranallocatableincallingC_F_POINTER【发布时间】:2020-08-2917:51:42【问题描述】:问题是,\'C_F_POINTER\'成功编译(ifort版本19.0.5.281),使用\'allocatable... 查看详情

c语言中除法怎么取得小数?

1、打开C-Free,新建文件。2、输入以下内容:(以除法为例)#include<stdio.h> main()floata,b,c; printf("请输入被除数:");scanf("%f",&a);printf("\\n请输入除数:");scanf("%f",&b);  c=a/b; printf(... 查看详情

c语言中除法怎么取得小数?

1、打开C-Free,新建文件。2、输入以下内容:(以除法为例)#include<stdio.h>main()floata,b,c;printf("请输入被除数:");scanf("%f",&a);printf("\n请输入除数:");scanf("%f",&b);c=a/b;printf("\n%f÷%f=%f\n&qu... 查看详情

c语言中的register是如何储存的

...寄存器中是一种提高效率的做法,和算法没关参考技术AC语言中,r 查看详情

执行多个查询时,“psql -c”和“psql -f”有啥区别?

】执行多个查询时,“psql-c”和“psql-f”有啥区别?【英文标题】:Whatisthedifferencebetween"psql-c"and"psql-f"whenexecutingmultiplequeries?执行多个查询时,“psql-c”和“psql-f”有什么区别?【发布时间】:2019-01-1421:29:13【问... 查看详情

c语言float可以输入指数吗

...会的,float是什么东东,什么意思啊,还有在程序float是C语言的基本数据类型中的一种,表示单精度浮点数。C语言规定单精度浮点型在内存占用4个字节,精度为7位,取值范围为:3.4*10^-38~3.4*10^38或者-(3.4*10^-38~3.4*10^38)可以定义单... 查看详情

在c语言中,如何将一个浮点数变换成整数?

需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:doublea=2.71828;printf("%d",int(a));。3、编译器运行test.cpp文件,此时成功将... 查看详情

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

...型或单精度也不行,只有2个都输入后按回车才能返回。C语言中要求输入函数的格式符个数要和输入项个数相同,但如果不同的时候哪些情况会等待输入,怎样才能结束输入呢?结束输入是看格式符个数还是输入项个数的?还是... 查看详情

c语言结构体的问题

structstudentintage;intnum;;structstudentstu[3]=1001,20,1002,19,1003,21;structstudent*p;p=stu;则下面表达式中的值为1002的是()A.(p++)->numB.(++p)->ageC.(*p).numD.(*p++).age能不能讲一下过程。。还有在这题中++在p前面和在后面的区别。。第... 查看详情

%f与%lf的区别和用法

​代码如下:#include<stdio.h>intmain(void)doublex;floaty;scanf("%lf%f",&x,&y);printf("%f%f",x,y);return0;%f和%lf是格式字符串,作用是在数据输入或输出时,把数据按照指定的格式(例如%d就代表十进制形式)输入或输出。%f代表单精度浮点... 查看详情

c语言宏定义中的迷惑行为(代码片段)

问题以下这段代码运行后输出什么结果?#definef(a,b)a##b#defineg(a)#a#defineh(a)g(a)printf("h(f(1,2))->%s,g(f(1,2))->%s\\n",h(f(1,2)),g(f(1,2)));先上答案:h(f(1,2))->12,g(f(1,2))->f(1,2)也许你跟我一 查看详情

c语言写入文件方法

文件操作2、假设有文件C:\f11.txt,其中保存着一批学生的3门考试成绩,第一个数据为学号,每位学生一行,格式如下:00167.586.533002909866003606980……编写程序实现功能:a、把这个文件的全部数据复制到新文件C:\f11a.txt中去,... 查看详情

`f()` 和 `new f()` 有啥区别? [复制]

】`f()`和`newf()`有啥区别?[复制]【英文标题】:What\'sthedifferencebetween`f()`and`newf()`?[duplicate]`f()`和`newf()`有什么区别?[复制]【发布时间】:2012-04-1416:48:37【问题描述】:可能重复:Whatisthe\'new\'keywordinJavaScript?creatingobjectsfromJSclosure:... 查看详情

c语言用调用函数和数组求斐波那契数列的前10项。f[i]=f(f,i);能这样用吗

参考技术A首先,你这样做当然不能说不行,起码语法上是没问题的。不过类似的问题要么是通过递归调用解决,要么转换成循环来解决。两者比较,前者实现简单,后者效率高(其实某些对性能要求高和堆栈深度有限制的情况... 查看详情

c语言类型转换

...出F=3啊?难道不能连续改变数据类型?????刚接触c语言没几天,如果问题比较低级还望耐心详细解答先在此谢过了!!!不要猜测,应该找一些资料看看。在32位PC系统中,int型的3是0x00000003,在内存中占4个字节,分别是03 查看详情

c语言中斐波拉契数列算法

#include<stdio.h>longintf(longintx) if(x==1) return1; if(x==2) return1; else returnf(x-1)+f(x-2);intmain() inta,i; scanf("%d",&a); for(i=1;i<a;i++) printf("%d,",f(i)); if(i=a) printf("%d\n",f(i)); system("pause"); return0;按照我编的这... 查看详情