当我在以下代码中将i<0,5
放在 for 循环的条件部分时
#include<stdio.h>
int main()
{
int i;
for(i = 0;i<0,5;i++)
printf("%dn",i);
return 0;
}
答案是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("%dn", i);
00931903 mov eax,dword ptr [i]
00931906 push eax
00931907 push offset string "%dn" (0937B30h)
0093190C call _printf (093104Bh)
00931911 add esp,8
00931914 jmp main+31h (09318F1h)
如果你想让循环在 5 次迭代后停止,你必须写
for(i = 0;i<5;i++)
printf("%dn",i);
正如melpomene所建议的那样,逗号操作在这里解释