黑马程序员技术交流社区

标题: define的注意事项 [打印本页]

作者: MoonLove    时间: 2015-8-11 09:44
标题: define的注意事项
       #define是C语言中提供的宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。#define可以给程序员带来很多方便,但如果使用不当会带来很多麻烦。
    当替换文本所表示的字符串为一个表达式时,容易引起误解和误用。
    如
   #define   N   2+2
   void main()
   {
     int   a=N*N;
     printf(“%d”,a);
    }       

    很多同学会把这题结果误认为是16,然而实际上结果是8。这是因为宏展开是在预处理阶段完成的,这个阶段把替换文本只是看作一个字符串,并不会有任何的计算发生,在展开时是在宏N出现的地方只是简单地使用串2+2来代替N,并不会增添任何的符号,所以对该程序展开后的结果是a=2+2*2+2,计算后=8。



作者: wangchao1992    时间: 2015-8-11 10:40
描述的不错,
作者: norwood    时间: 2015-8-11 16:46
干得好。。。




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