当我在以下代码中将i<0,5
放入for循环的条件部分中
#include<stdio.h>
int main()
{
int i;
for(i = 0;i<0,5;i++)
printf("%d\n",i);
return 0;
}
答案 0 :(得分:1)
答案是5
始终是true
。
请参阅从您的反汇编的以下代码。
条件部分仅引用5
。
move eax, 5
将5保存到eax
寄存器中。
test eax, eax
正在eax
和eax
之间进行比较。
它必须始终相同。因此,这始终是正确的。
009318FA mov eax,5
009318FF test eax,eax
00931901 je main+56h (0931916h)
这是完整的代码:
int i;
for (i = 0; i < 0, 5; i++)
009318E8 mov dword ptr [i],0
009318EF jmp main+3Ah (09318FAh)
009318F1 mov eax,dword ptr [i]
009318F4 add eax,1
009318F7 mov dword ptr [i],eax
009318FA mov eax,5
int i;
for (i = 0; i < 0, 5; i++)
009318FF test eax,eax
00931901 je main+56h (0931916h)
printf("%d\n", i);
00931903 mov eax,dword ptr [i]
00931906 push eax
00931907 push offset string "%d\n" (0937B30h)
0093190C call _printf (093104Bh)
00931911 add esp,8
00931914 jmp main+31h (09318F1h)
答案 1 :(得分:-1)