混淆的迷宫发生器

时间:2013-01-11 13:11:28

标签: c obfuscation main maze

我从http://www.mazeworks.com/mazegen/maze_faq

找到了一个模糊的迷宫生成程序
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2]
a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}

我无法理解为什么使用main(z,p,q,r)。将什么分配给这些变量?

1 个答案:

答案 0 :(得分:3)

它被淹没了,你不应该理解它:)

这是一种声明整数变量的模糊方法。如果不明确地在c中写入变量的类型,则假定为int。部分main(z,p,q,r)也可以写为int main(int z, int p, int q, int r),但这很无聊。 当调用main时,没有值传递给这些变量,所以在函数的开头它们可以未初始化。 z,p和q用argc的值和argv和envp的指针地址初始化。 r的值应该是未定义的。但大多数这些值立即被丢弃。例如,变量p的值在main函数开始的for语句中初始化,而下一个for语句中的变量z初始化。

根据ANSI,是否合法使用具有四个整数作为参数的主函数?省略int变量的类型是一种好习惯吗?你应该将函数参数滥用为局部变量吗?谁在乎,在混淆时它运行时是正确的。