鱼C论坛

 找回密码
 立即注册
查看: 2186|回复: 6

抄袭:不用循环和递归输出0-999

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

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

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

x
各位大神,小弟在看甲鱼视频的时候发现了一段代码。但是理解不透。   请各位大神帮忙注释一下代码的含义。

            非常感谢。!!!


#include <stdio.h>
#define A(x)x;x;x;x;x;x;x;x;x;x;                  //  这里理解不透

int main()
{
        int n = 0;

        A(A(A(printf("%d\n", n++))));     // 这里也没有理解。。


        return 0;
}



麻烦各位大神了 。


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-3-9 11:04:43 | 显示全部楼层
问题补充:  调试了一下结果好像是从0-999   但是当输出结束的时候,控制台只显示从701开始到999. 什么情况?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-9 11:26:10 | 显示全部楼层
本帖最后由 小人 于 2015-3-9 03:28 编辑

1  宏定义      #define A(x)x;x;x;x;x;x;x;x;x;x;     //A(x)  后面有10个 x   就是 把A(x)   括号里的x执行10 次

2  上面 说了  A(x)的宏定义就是 变成10 次
那么    A(A(A(printf("%d\n", n++))));    等于 A(A(A(X)))
就是输出 10×10×10x 次     x 等于printf("%d\n", n++)

说得不太清楚 ,不懂再提问
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-3-9 11:37:36 | 显示全部楼层
小人 发表于 2015-3-9 11:26
1  宏定义      #define A(x)x;x;x;x;x;x;x;x;x;x;     //A(x)  后面有10个 x   就是 把A(x)   括号里的x ...

可能是我理解有点笨,还是没怎么理解透。能不能再简单点大神。。。。。:shy:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-9 12:21:16 | 显示全部楼层
本帖最后由 小人 于 2015-3-9 04:24 编辑
我的思维在跳跃 发表于 2015-3-9 03:37
可能是我理解有点笨,还是没怎么理解透。能不能再简单点大神。。。。。

先说定义宏   
#define A(x)x;x;x;x;x;x;x;x;x;x      //这句的意思就是把x 执行10次
如果这样写#define A(x)x;x     //就是 把x执行两次      


然后 下面的  A(A(A(printf("%d\n", n++))));      

因为上面定义的宏 A是把括号里的执行10次如果是A(printf("%d\n", n++)     那么 把括号里的东西执行10次就等于
printf("%d\n", n++)
printf("%d\n", n++)
printf("%d\n", n++) printf("%d\n", n++)
printf("%d\n", n++)
printf("%d\n", n++)
printf("%d\n", n++)
printf("%d\n", n++)
printf("%d\n", n++)
printf("%d\n", n++)


那么 A(A(A(printf("%d\n", n++))))   10*10*10x



说这么多   应该能明白吧  
语文老师死得早







小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-3-9 13:33:55 | 显示全部楼层
原来宏定义还可以这样用:funk:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-9 14:21:29 | 显示全部楼层
小人 发表于 2015-3-9 12:21
先说定义宏   
#define A(x)x;x;x;x;x;x;x;x;x;x      //这句的意思就是把x 执行10次
如果这样写#defi ...

非常感谢。。。有那么点点点明白。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 05:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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