我的思维在跳跃 发表于 2015-3-11 13:56:56

宏定义

本帖最后由 我的思维在跳跃 于 2015-3-11 14:25 编辑

各位大神请求帮忙注释一下这两个对比的例子,实在是看不懂。学宏定义学晕了。


#include <stdio.h>

#define SQ(y) ( (y)*(y) )   // 这个位置宏定义SQ(y)    在下面替换的结果是什么?

int main()
{      
      int i = 1;
      

      while(i <=5)
      {
                printf("%d\n", SQ(i++));   //这个位置的SQ 等价于什么?    (i++)起到一个什么作用?循环+1的作用么?
      }


      return 0;
}


问题补充:


#include <stdio.h>

int main()
{       
        int i = 1;
        int SQ(int y);

        while(i <=5)
        {
                printf("%d\n", SQ(i++));      //如果把这个(i++)放在下面
                //i++;             这样输出结果怎么变化那么大。????
        }


        return 0;
}

int SQ(int y)
{
        return( (y) * (y) );
}




haiouda 发表于 2015-3-11 14:16:40

i++ ; 是自增运算, 目的是,为循环终止设定了条件(即避免死循环)

这个宏,可以把它看成:按文本形式替换,即把程序中出现的SQ(y)替换成:((y)*(y))

我的思维在跳跃 发表于 2015-3-11 14:26:23

haiouda 发表于 2015-3-11 14:16
i++ ; 是自增运算, 目的是,为循环终止设定了条件(即避免死循环)

这个宏,可以把它看成:按文本形式 ...

大神我把问题从新补充了一下,麻烦你讲解详细一点好么。。。我这个理解能力有点差:cry

haiouda 发表于 2015-3-11 14:53:43

我的思维在跳跃 发表于 2015-3-11 14:26
大神我把问题从新补充了一下,麻烦你讲解详细一点好么。。。我这个理解能力有点差

首先我不是大神!
其次,现在我有点搞不清楚你是哪里不懂?
是 while 这个语句不懂,还是i++(自增运算)不懂,或者是,宏替换,换不明白;

如果以上都搞不清,建议你从第一集开始看小甲鱼的 C 语言 ;
因为:授人以鱼,不如授人以渔,望从零开始脚踏实地,共同进步 :handshake

我的思维在跳跃 发表于 2015-3-11 15:32:08

haiouda 发表于 2015-3-11 14:53
首先我不是大神!
其次,现在我有点搞不清楚你是哪里不懂?
是 while 这个语句不懂,还是i++(自增运 ...

宏替换没弄明白啊亲。。。

haiouda 发表于 2015-3-12 11:44:48

我的思维在跳跃 发表于 2015-3-11 15:32
宏替换没弄明白啊亲。。。

宏就是简单的替换呀;
例如:
# define se1989

就是把下面,出现 se ,的地方,都替换成 1989; 这就是宏呀

页: [1]
查看完整版本: 宏定义