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

来源:百度知道 编辑:UC知道 时间:2024/05/14 11:02:57
#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;

以上程序的输出结果是什么?
请帮我把步骤说明一下,非常感谢!

#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...

分太少了,再给50分我就帮你搞定