
一道c语言的编译预处理问题.请各位帮忙看看
#defineP3.5#defineS(x)P*x*xmain(){intx=2,y=3;printf("%4d\n",S(x+y));答案给的是%41.为什么啊?不明白...
#define P 3.5
#define S(x) P*x*x
main()
{int x=2,y=3;
printf("%4d\n",S(x+y));
答案给的是%41.为什么啊?不明白.或是题目错了,还是答案错了吗? 展开
#define S(x) P*x*x
main()
{int x=2,y=3;
printf("%4d\n",S(x+y));
答案给的是%41.为什么啊?不明白.或是题目错了,还是答案错了吗? 展开
5个回答
展开全部
宏定义只是把相应的字符串替换
按照你的定义
S(x+y)应该被替换为P*x+y*x+y=3.5*2+3*2+3
建议在宏定义的时候
要考虑到运算符号的优先级问题
按照你的定义
S(x+y)应该被替换为P*x+y*x+y=3.5*2+3*2+3
建议在宏定义的时候
要考虑到运算符号的优先级问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
define的意思是直接把前面的字符串替换为后面的字符串
S(x) 不能在define里定义,应该另外写个函数
S(x) 不能在define里定义,应该另外写个函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-02-03
展开全部
S(x+y)按照原程序中的宏定义展开后是如下形式:
3.5*2+3*2+3
3.5*2+3*2+3
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要得到你想要的答案
#define S(x) P*(x)*(x)
现在的计算结果是3.5*2+3*2+3=7+6+3=16
#define S(x) P*(x)*(x)
现在的计算结果是3.5*2+3*2+3=7+6+3=16
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-02-03
展开全部
#define S(x) P*x*x
//改为:
#define S(x) (P*(x)*(x))
//改为:
#define S(x) (P*(x)*(x))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询