变量没有初始化直接拿来用,就知道你是个菜鸟,这么不规范的程序也拿出来,刚学c语言吧?学过汇编吗,知道不同的编译器汇编出来的结果可能不一样么?
第一句for循环b=c的时候跳出,所以f[2800]=0
第二句for循环是个嵌套循环,条件语句里面既是赋值又是对变量本身的判断,或的关系。一直到g=0。
至于什么先++后--之类的雕虫小技就不说了,其实什么代码汇编一下就看得一清二楚,编译器是怎样处理的。
0040D888 mov eax,[b (0042a828)]
0040D88D sub eax,dword ptr [c (00424a34)]
0040D893 test eax,eax
0040D895 je main+50h (0040d8c0)
【 在 lvsoft 的大作中提到: 】
long a=10000,b,c=2800,d,e,f[2801],g;
main(){
for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
--
修改:chinatongue FROM 123.117.86.*
FROM 123.117.86.*