C语言的高手吗?可以帮忙解决以下问题吗?运行结果为什么是a=0 a=50 a=947

来源:百度知道 编辑:UC知道 时间:2024/06/16 18:53:15
#include "stdio.h"
#define pr(a) printf("a=%d\t",(int)(a))
#define print(a) pr(a);putchar('\n')
#define print2(a,b) pr(a);print(b)
main()
{
int cel;
for (cel=0;cel<100;cel+=50)
print2(cel,9.15*cel+32);
}
liu_binq63, 明白,万分感谢!!!

#define是宏定义,定义出来的内容在预编译时被简单的替换。
这段程序展开后是这样的:
1、展开#define print2(a,b) pr(a);print(b) ,得到:
#include "stdio.h"
#define pr(a) printf("a=%d\t",(int)(a))
#define print(a) pr(a);putchar('\n')
main()
{
int cel;
for (cel=0;cel<100;cel+=50)
pr(cel);print(9.15*cel+32);
}
2、展开#define print(a) pr(a);putchar('\n'),得到:
#include "stdio.h"
#define pr(a) printf("a=%d\t",(int)(a))
main()
{
int cel;
for (cel=0;cel<100;cel+=50)
pr(cel);pr(9.15*cel+32);putchar('\n');
}
3、展开#define pr(a) printf("a=%d\t",(int)(a)) ,得到:
#include "stdio.h"
#define pr(a) printf("a=%d\t",(int)(a))
main()
{
int cel;
for (cel=0;cel<100;cel+=50)
printf("a=%d\t",(int)(cel));printf("a=%d\t",(int)(9.15*cel+32));putchar(&#