fudge函数C语言 c语言中f函数用法

c语言求救

你用的都是宏定义,宏定义编译的时候替换的。具体到你这个问题,PRINT1(FUDGE(5)*x);

创新互联公司主要从事做网站、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务肇州,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

是这样替换的,FUDGE(5)*x这个整体作为参数宏定义里的参数a,这里面还有一个参数宏FUDGE(5),它是这么替换的,2.84+5。而在PRINT1这个宏里,替换后的参数为2.84+5*2。又因为你是int类型,所以输出为12。

一些建议:

宏里面只是简单替换,不会帮你改变运算顺序,如果需要请用小括号改变相关运算顺序。

PRINT1(FUDGE(5)*x);修改为PRINT1( ( FUDGE(5) ) *x);看看。

宏参数记得加上小括号。#define FUDGE(y) 2.84+y中的y写成 2.84+(y)

希望对你有所帮助。

关于c语言的

FUDGE(5)*y展开时变成

2.84+5*y

=2.84+5*2

=12.84

所以结果是12。

应该这样这样定义:

#define FUDGE(y) (2.84+y)

则FUDGE(5)*y

=(2.84+5)*2

=15.68

结果是15.

C语言用define还有i后增

38

将宏定义带入即可。

PRINT1(FUDGE(5)*x);

=

PR(FUDGE(5)*x);putchar('\n');

=

printf("%d",(int)(FUDGE(5)*x));putchar('\n');

=

printf("%d",(int)(2.84+5*x));putchar('\n');

x值为2, 2.84+5*x=12.84 转为int为12

于是这里输出12

选B

39

这里有两个i,中间{}里面用的i,和外面用的i不同。

执行第一个printf 打印外面的i值,1, 打印后,i自加为2

执行中间的{} i+=j*2 i=i+j*2=0+6=6

输出i和j,也就是6,3

然后输出下一个i和j,注意 这里是i是{}外面的i, 也就是自加后的2,

这里输出2,3

于是 输出

1,6,3,2,3

选B

注意,这里第一个和第二个printf少打了一个逗号按照现在程序 实际上输出的是

16,32,3

c语言写程序结果的小问题

#include stdio.h

#define FUDGE(y) 2.84+y

#define PR(a) printf("%d",(int)(a))

#define PRINT1(a) PR(a);putchar('\n')

main()

{

int x=2;

PRINT1(FUDGE(5)*x);

}

对于以上程序 结果应该是12

要说明的是,FUDGE(y)等不是普通的函数,而是预编译宏,执行时不能按一般的算法思维

预编译是在程序编译之前就进行替换的,即

FUDGE(5)*x

在编译之前被替换成了

2.84+5*x,而不是(2.84+5)*x

这样在进行真正的编译的时候2.84+5*x=2.84+5*2=12.84

然后经过int强制转化变成12输出 o(∩_∩)o...


分享文章:fudge函数C语言 c语言中f函数用法
文章路径:http://azwzsj.com/article/doeddph.html