口袋妖怪カモネギ:C程序问题

来源:百度文库 编辑:高校问答 时间:2024/04/28 07:41:57
#include "stdio.h"
#define F(y) 8.19-y
#define PRINT(a) printf("%d",(int)(a))
main()
{
int x=2;
PRINT(x*F(3));
}
本人上机测试过结果为13,但是我认为应该得10,不知道是怎么回事,请各位高手指点一下,好吗?我在这儿谢谢了!

将PRINT(x*F(3))全部展开得
printf("%d",(int)(x*F(3))) ,再展开
printf("%d",(int)(x*8.19-3))
因为x*8.19-3=16.39-3=13.39
再来个int转换,当然输出整数部分13了。
记住#define只是做简单的展开,如果你想得到x*(8.19-3) =10,应该将
#define F(y) 8.19-y改成
#define F(y) (8.19-y)

PRINT(x*F(3)); 计算机应该不认识吧
#define PRINT(a) printf("%d",(int)(a))
只是定义一一个常量PRINT(a)

#define只是作简单的替换,so
#define F(Y) 8.19-Y就是在程序有F(Y)的地方直接涌8.19-Y代替
所以要让结果是10应该在程序体中F(Y)外加括号,像这样
PRINT(x*(F(3)));

#define F(y) 8.19-y
改为
#define F(y) (8.19-y)