抄袭:不用循环和递归输出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;
}
麻烦各位大神了 。
问题补充:调试了一下结果好像是从0-999 但是当输出结束的时候,控制台只显示从701开始到999. 什么情况? 本帖最后由 小人 于 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: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 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:}
语文老师死得早
原来宏定义还可以这样用:funk: 小人 发表于 2015-3-9 12:21
先说定义宏
#define A(x)x;x;x;x;x;x;x;x;x;x //这句的意思就是把x 执行10次
如果这样写#defi ...
非常感谢。。。有那么点点点明白。
页:
[1]