能力值:
( LV12,RANK:240 )
|
-
-
2 楼
1,进入for 循环 初始 i *= k 得到i = 0 i *= k紧在进入for循环执行一次
2,结束条件永远为假 所以程序不会离开for循环,所以不会输出下面的 sssss,所以结果只是输出 0 到 100
3,把你的程序用我的VC++ 8.0编译下再OD下得到
00401000 >/$ 56 PUSH ESI
00401001 |. 33F6 XOR ESI,ESI
00401003 |> 56 /PUSH ESI ; /<%d>
00401004 |. 68 FC604000 |PUSH OFFSET 1234.??_C@_03PMGGPEJJ@?$CFd>; |format = "%d
"
00401009 |. E8 0D000000 |CALL 1234.printf ; \printf
0040100E |. 83C4 08 |ADD ESP,8
00401011 |. 46 |INC ESI
00401012 |. 83FE 64 |CMP ESI,64
00401015 |.^ 7E EC \JLE SHORT 1234.00401003
00401017 |. 33C0 XOR EAX,EAX
00401019 |. 5E POP ESI
0040101A \. C3 RETN
编译器非常的聪明 还原成C语言 得到
for(i = 0; i <= 0x64 ;i++){
printf("%d\n",i);
} 也就是你的程序起作用部分
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
#include <io.h>
#include <fcntl.h>
main()
{
int i=1,k=2;
for(i=i*k;;i++)//原来这是0与别的数相乘。
{
if(i>100)break; //是的啊自己搞错了,用break就可以的,要是用RETURN就直接退出
printf("%d\n",i);
}
if(1){printf("sssss");}
return;
}
|
|
|