这是一个基本的C程序,它不使用循环或条件来打印数字.我想知道它是如何做的,以及"退出"和"主要"的目的.被main用于递归在这里?
#include <stdio.h>
#include <stdlib.h>
void main(int j) {
printf("%d\n", j);
(&main + (&exit - &main)*(j/1000))(j+1);
}
Run Code Online (Sandbox Code Playgroud)
假设j是500.那么(&exit - &main)是什么(无所谓)并且(j/1000)是0,所以(&main + (&exit - &main)*(j/1000))(j+1)是有效的main(501).相反,如果j为1000,(j/1000)则为1,这意味着(&main + (&exit - &main)*(j/1000))与(&main + (&exit - &main))(也就是说&exit)相同,因此它会调用exit(1001).
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |