A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 远人 中级黑马   /  2014-3-31 12:11  /  978 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我在复习宏定义时的一个发现,先看如下代码:
  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第一班!

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1 加油~!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马