【发布时间】:2011-12-17 18:38:52
【问题描述】:
我发现 C 代码是 prints from 1 to 1000 without loops or conditionals :
但我不明白它是如何工作的。任何人都可以通过代码并解释每一行吗?
#include <stdio.h>
#include <stdlib.h>
void main(int j) {
printf("%d\n", j);
(&main + (&exit - &main)*(j/1000))(j+1);
}
【问题讨论】:
-
您是编译为 C 还是 C++?你看到什么错误?你不能在 C++ 中调用
main。 -
@ninjalj 我创建了一个 C++ 项目并复制/粘贴错误代码:非法,左操作数的类型为 'void (__cdecl *)(int)' 并且表达式必须是指向完整的对象类型
-
@ninjalj 这些代码在 ideone.org 上运行,但在 Visual Studio 中不运行ideone.com/MtJ1M
-
@oussama 类似,但有点更多难以理解:ideone.com/2ItXm不客气。 :)
-
我已从这些行中删除了所有 '&' 字符 (&main + (&exit - &main)*(j/1000))(j+1);并且这段代码仍然有效。
标签: c function-pointers