不知道原理,求帮助
#include<stdio.h>#define M 3
#define N M+1
#define NN N*N/2
main()
{
printf("%d\n",NN);
printf("%d\n",5*NN);
}
结果出来后是 6
18
百度了一下:是因为只能够直接带入进去
NN=N*N/2=M+1*M+1/2=3+1*3+1/2=3+3+0=6
如上看到的:M+M+1/2=3+3+0=6 我以为是后面的%d导致只能输出整数,1/2是0.5所以不能输出,
自己又改了一下:
#include<stdio.h>
#define M 3
#define N M+1
#define NN N*N/2
main()
{
printf("%f\n",(float)NN);
printf("%f\n",(float)5*NN);
}
结果输出的是 6.000000
18.000000
不明白,求帮忙
1/2那里为什么是0了?我改成float形式为什么没有变成6.5?
[此贴子已经被作者于2016-1-28 21:30编辑过]