c
int i = 0;
00007FF60510185C mov dword ptr [i],0
while (i <= 10){
00007FF605101863 cmp dword ptr [i],0Ah
00007FF605101867 jg main+43h (07FF605101883h)
printf("%d ", i);
00007FF605101869 mov edx,dword ptr [i]
00007FF60510186C lea rcx,[string "%d " (07FF605109C24h)]
00007FF605101873 call printf (07FF605101253h)
00007FF605101878 nop
i++;
00007FF605101879 mov eax,dword ptr [i]
00007FF60510187C inc eax
00007FF60510187E mov dword ptr [i],eax
}
00007FF605101881 jmp main+23h (07FF605101863h)
i = 0;
00007FF605101883 mov dword ptr [i],0
do {
printf("%d ", i);
00007FF60510188A mov edx,dword ptr [i]
00007FF60510188D lea rcx,[string "%d " (07FF605109C24h)]
00007FF605101894 call printf (07FF605101253h)
00007FF605101899 nop
i++;
00007FF60510189A mov eax,dword ptr [i]
00007FF60510189D inc eax
00007FF60510189F mov dword ptr [i],eax
} while (i <= 10);
00007FF6051018A2 cmp dword ptr [i],0Ah
00007FF6051018A6 jle main+4Ah (07FF60510188Ah)
for (i = 0;i <= 10;i++) {
00007FF6051018A8 mov dword ptr [i],0
00007FF6051018AF jmp main+79h (07FF6051018B9h)
00007FF6051018B1 mov eax,dword ptr [i]
00007FF6051018B4 inc eax
00007FF6051018B6 mov dword ptr [i],eax
00007FF6051018B9 cmp dword ptr [i],0Ah
00007FF6051018BD jg main+91h (07FF6051018D1h)
printf("%d ", i);
00007FF6051018BF mov edx,dword ptr [i]
00007FF6051018C2 lea rcx,[string "%d " (07FF605109C24h)]
00007FF6051018C9 call printf (07FF605101253h)
00007FF6051018CE nop
}
00007FF6051018CF jmp main+71h (07FF6051018B1h)
循环效率的比较
1.从反汇编代码的行数来看,for循环最慢,while循环和do-while循环较快
2.while循环和do-while循环在结构上较为清晰,执行速度较快
3.do-while循环的执行效率最高,适用于简单和通用的循环场景