LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 776|回复: 7

一个C问题!敬请详解!

[复制链接]
发表于 2004-8-22 00:09:15 | 显示全部楼层 |阅读模式
#include<stdio.h>
#define PT 5.5
#define S(x) PT*x*x
main( )
{ int a=1,b=2;
printf("%4.1f\n",S(a+b));
}
答是9.5,怎么解释?
发表于 2004-8-22 02:04:11 | 显示全部楼层
5.5 * 1 + 2 * 1 + 2
发表于 2004-8-22 07:44:15 | 显示全部楼层
  1. if
  2.     #define S(x) PT*x*x
  3.     S(a+b) will be Pt*a+b*a+b
  4. else if
  5.     #define S(x) (PT)*(x)*(x)
  6.      S(a+b) will be Pt*(a+b)*(a+b)
复制代码
 楼主| 发表于 2004-8-22 10:52:23 | 显示全部楼层

明白了

谢谢你们!
发表于 2004-8-22 14:50:41 | 显示全部楼层
宏不是每个地方都适用,有时展开后与预期的不一样,这必须注意。
发表于 2004-8-23 09:52:47 | 显示全部楼层
使用宏时最好加上括号,以免发生意想不到的事情。
发表于 2004-8-23 12:18:37 | 显示全部楼层
还是用inline函数吧
发表于 2004-8-24 13:02:14 | 显示全部楼层
最好加上括号!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表