c语言高手请进!

[复制链接]
查看11 | 回复3 | 2010-6-27 16:58:28 | 显示全部楼层 |阅读模式
#include
#define P 3.5
#define S(x) P*x*x
void main()
{
int a=1,b=2;

printf("%4.1f\n",S(a+b));
}
大家看一下以上的c程序,为什么最终结果是7.5,而不是31.5呢?我想了老半天都不明白,望高手指点!

回复

使用道具 举报

千问 | 2010-6-27 16:58:28 | 显示全部楼层
S(a+b)展开后为 P*a+b*a+b,带入P 3.5,a=1,b=2后,得结果7.5.如果想得到31.5,应该修改为#define S(x) P*(x)*(x)
回复

使用道具 举报

千问 | 2010-6-27 16:58:28 | 显示全部楼层
S(a+b)=P*a+b*a+b=3.5*1+2*1+2=7.5只是替换哈 不要自己去加括号
回复

使用道具 举报

千问 | 2010-6-27 16:58:28 | 显示全部楼层
#define S(x) P*x*x
//P *(x)*(x)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行