鱼C论坛

 找回密码
 立即注册
查看: 1558|回复: 5

宏定义

[复制链接]
发表于 2015-3-11 13:56:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我的思维在跳跃 于 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) );
}




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这个宏,可以把它看成:按文本形式替换,即把程序中出现的SQ(y)替换成:((y)*(y))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-11 14:26:23 | 显示全部楼层
haiouda 发表于 2015-3-11 14:16
i++ ; 是自增运算, 目的是,为循环终止设定了条件(即避免死循环)

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

大神我把问题从新补充了一下,麻烦你讲解详细一点好么。。。我这个理解能力有点差:cry
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

如果以上都搞不清,建议你从第一集开始看小甲鱼的 C 语言 ;
因为:授人以鱼,不如授人以渔,望从零开始脚踏实地,共同进步 :handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

宏替换没弄明白啊亲。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-12 11:44:48 | 显示全部楼层
我的思维在跳跃 发表于 2015-3-11 15:32
宏替换没弄明白啊亲。。。

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 20:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表