请懂得C程序语言的高手进来帮帮忙,谢谢!

现在有一道C程序语言的题:
设有以下宏定义:
#define PI 3.14
#define S(r) ( PI*r*r)
则执行语句:z = S(2+1);后,z的值为__________
怎么正确答案是9.28的,我一直都想不明白。请帮帮忙,谢谢!(答案已确定是9.28的了,可就不明白怎么运行得到这个结果的)

宏就是简单的代入
S(r) r是2+1,
于是z=S(2+1)=(PI*2+1*2+1)=(3.14*2+1*2+1)=9.28
按你的意思 ,你应该执行z=S(3)
就可以得到你想要的结果了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-22
理解#define 本质:字符串替换
#define S(r) (PI*r*r)
意思就是 把S(r) 换成 PI*r*r不管r是什么

结果显然 。 。。。
用好#define得学会加括号
#define 没有类型检查、不管优先级 。。纯字符替换
C++ 中使用const 替代#define 消除副作用
第2个回答  2010-06-22
#define PI 3.14
#define S(r) ( PI*r*r)
已知前面的条件后得,r=2+1
代入得表达式:(3.14*2)+(1*2)+1
6.28+2=8.28+1=9.28
第3个回答  2010-06-22
我觉得你那个S(R)打错了
打成了(PI*R+R)
第4个回答  2010-06-22
宏pl定义为了3.14,然后传进去一个参数r=2+1
所以得到 3.14*2+1*2+1=9.28
第5个回答  2010-06-22
先给我高分!我一点点详细讲给你听!QQ849681223
相似回答