C 函数指针,宏
打印1~1000.(不使用循环,不使用条件语句)
1 使用函数指针退出
代码
void yesprint(int i);
void noprint(int i);
typedef void(*fnPtr)(int);
fnPtr dispatch[] = { yesprint, noprint };
void yesprint(int i) {
printf("%d\n", i);
dispatch[i / 1000](i + 1);
}
void noprint(int i) { /* do nothing. */ }
int main() {
yesprint(1);
}
void noprint(int i);
typedef void(*fnPtr)(int);
fnPtr dispatch[] = { yesprint, noprint };
void yesprint(int i) {
printf("%d\n", i);
dispatch[i / 1000](i + 1);
}
void noprint(int i) { /* do nothing. */ }
int main() {
yesprint(1);
}
2 使用宏
#include
#define Out(i) printf("%d\n", i++);
#define REP(N) N N N N N N N N N N
#define Out1000(i) REP(REP(REP(Out(i))));
void main()
{
int i = 1;
Out1000(i);
}
#define Out(i) printf("%d\n", i++);
#define REP(N) N N N N N N N N N N
#define Out1000(i) REP(REP(REP(Out(i))));
void main()
{
int i = 1;
Out1000(i);
}