黑马程序员技术交流社区

标题: 关于宏定义中的发现 [打印本页]

作者: 远人    时间: 2014-3-31 12:11
标题: 关于宏定义中的发现
这是我在复习宏定义时的一个发现,先看如下代码:
  1. #define  (double)pingfang(a) ((a)*(a))
  2. //#define pingfang(a) ((a)*(a))
  3. int main(int argc, const char * argv[])
  4. {
  5.    
  6. //    double c = pingfang(5+5)/pingfang(2+2);
  7.     double c = (double)pingfang(5+5)/(double)pingfang(2+2);
  8.     printf("%f\n",c);
  9.     return 0;
  10. }
复制代码


宏定义的变量都是int 类型的,在计算过程中要得到准确数字必须进行转换运算,被注释掉的就是老师上课讲的原代码,输出答案是6.000000。
现在被我修改之后,首先会报错,报错原因是宏定义必须是标示符,说明宏定义中不能控制类型,只能是int类型,然后去掉宏定义中的(double),在下面的计算中进行转换运算,结果是6.250000。结合老师的讲解,再次说明宏定义中的是int类型。
此上发现也表示我基础还不牢靠,如若有什么不对的地方,还望大家指出,如若有同学也是第一次发现,那么和我一样,还要认真复习验证代码,有很多细节还未被发现,大家加油,争取黑马ios第一班!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2