( saxus | 2015. 01. 10., szo – 15:38 )

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™