Bónusz, meg lehet nézni, hogy mi lesz a segédváltozóból egy normálisabb fordító esetén (VS2010, C++, release profil):
int _tmain(int argc, _TCHAR* argv[])
{
00A01000 push esi
bool done = false;
srand (time(NULL));
00A01001 push 0
00A01003 call dword ptr [__imp___time64 (0A020A8h)]
00A01009 push eax
00A0100A call dword ptr [__imp__srand (0A020A0h)]
00A01010 mov esi,dword ptr [__imp__rand (0A0209Ch)]
00A01016 add esp,8
00A01019 lea esp,[esp]
while (!done)
{
int r = rand() % 10;
00A01020 call esi
00A01022 cdq
00A01023 mov ecx,0Ah
00A01028 idiv eax,ecx
switch (r)
00A0102A dec edx
00A0102B je wmain+32h (0A01032h)
00A0102D sub edx,2
00A01030 jne wmain+20h (0A01020h)
{
case 1:
done = true;
break;
case 3:
done = true;
break;
}
}
return 0;
00A01032 xor eax,eax
00A01034 pop esi
}(Sajnos a C# fordító alapból nem optimalizálja ki a segédváltozót).
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™