【发布时间】:2014-07-06 01:36:27
【问题描述】:
这是一个基本的 C 程序,它不使用循环或条件来打印数字。我想知道它是如何做的,以及“退出”和“主要”的目的。 main 这里是用来递归的吗?
#include <stdio.h>
#include <stdlib.h>
void main(int j) {
printf("%d\n", j);
(&main + (&exit - &main)*(j/1000))(j+1);
}
【问题讨论】:
-
这是一个基本的多向错误 C 程序,使用带有
main函数的递归... -
它使用了可怕的基于指针的递归。所以没有循环,但是有很多对 main() 的隐藏调用
-
它是一个非常酷的递归版本。乘法类似于比较,如果 j 为 1000,则重定向到退出函数
-
标准 C 中这段代码的确切问题是它违反了约束,因为
-和+不能与函数指针一起使用。另外,当然,是否允许main的签名是实现定义的。
标签: c