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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© MoonLove 中级黑马   /  2015-8-11 09:44  /  587 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       #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。


2 个回复

倒序浏览
描述的不错,
回复 使用道具 举报
干得好。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马