我的思维在跳跃 发表于 2015-3-9 11:03:29

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

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

            非常感谢。!!!


#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;
}



麻烦各位大神了 。


我的思维在跳跃 发表于 2015-3-9 11:04:43

问题补充:调试了一下结果好像是从0-999   但是当输出结束的时候,控制台只显示从701开始到999. 什么情况?

小人 发表于 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++)

说得不太清楚 ,不懂再提问{:9_240:}

我的思维在跳跃 发表于 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:

小人 发表于 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



说这么多   应该能明白吧{:9_240:}
语文老师死得早







不要叫我小六 发表于 2015-3-9 13:33:55

原来宏定义还可以这样用:funk:

我的思维在跳跃 发表于 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 ...

非常感谢。。。有那么点点点明白。
页: [1]
查看完整版本: 抄袭:不用循环和递归输出0-999