黑马程序员技术交流社区
标题:
关于宏定义中的发现
[打印本页]
作者:
远人
时间:
2014-3-31 12:11
标题:
关于宏定义中的发现
这是我在复习宏定义时的一个发现,先看如下代码:
#define (double)pingfang(a) ((a)*(a))
//#define pingfang(a) ((a)*(a))
int main(int argc, const char * argv[])
{
// double c = pingfang(5+5)/pingfang(2+2);
double c = (double)pingfang(5+5)/(double)pingfang(2+2);
printf("%f\n",c);
return 0;
}
复制代码
宏定义的变量都是int 类型的,在计算过程中要得到准确数字必须进行转换运算,被注释掉的就是老师上课讲的原代码,输出答案是6.000000。
现在被我修改之后,首先会报错,报错原因是宏定义必须是标示符,说明宏定义中不能控制类型,只能是int类型,然后去掉宏定义中的(double),在下面的计算中进行转换运算,结果是6.250000。结合老师的讲解,再次说明宏定义中的是int类型。
此上发现也表示我基础还不牢靠,如若有什么不对的地方,还望大家指出,如若有同学也是第一次发现,那么和我一样,还要认真复习验证代码,有很多细节还未被发现,大家加油,争取黑马ios第一班!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2