C语言打印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++))));
return 0;
}
首先让大家看一下结果

很轻易得看出代码是对的
那让我讲一下这预处理的妙用
#define A(x) x;x;x;x;x;x;x;x;x;x;
怎么理解这个?
就是吧A(x)等同于十个x,只不过注意 ‘ ;’
看后面的
A(A(A(printf("%d ", n++))));
这里就把x变成了printf("%d ", n++)
没有分号
但是预处理的
#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++))));
return 0;
}
A(A(A(printf("%d ", n++))));
进行一次n+1;
第一个A(x)是进行十次printf;
A(A(x))进行100次printf;
A(A(A(x)))进行1000次printf;
也就输出了0到999;
这真的秀
加油学习C语言无止境;
喜欢给个赞呗!
&spm=1001.2101.3001.5002&articleId=112147378&d=1&t=3&u=90a5326494e34064916b3f2b704167cc)
5万+

被折叠的 条评论
为什么被折叠?



