C语言的条件编译为什么不能正常运行之二

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:34:43
还有一道例题:
# include <stdio.h>
main()
{
float r,s;
printf("输入半径:");
scanf("%d",&r);
#ifdef PI
s=PI*r*r;
#else
# define PI 3.14159
s=PI*r*r;
#endif
printf("s=%f\n",s);
}
编译可以通过,但无论输入r为何值,总是得到s=0.000000???
请高手再给予指点!谢谢

# include <stdio.h>
main()
{
float r,s;
printf("输入半径:");
scanf("%d",&r);//%f 就OK了
#ifdef PI
s=PI*r*r;
#else
# define PI 3.14159
s=PI*r*r;
#endif
printf("s=%f\n",s);
}

scanf("%f",&r); /***r是浮点数,用f***/

看来你对条件编译很感兴趣哦
这个不是条件编译的问题
我建议两处地方改一下

int r;//定义R为整型

s=PI*(float)*r*r//加一个强制类型转换

printf和scanf都是由很严格的格式限制的
你的程序里面,printf格式对了为什么scanf的各式有不对了呢〉
呵呵,float各式的数据,输入输出时,用的控制符是%f