Показать сообщение отдельно
  (#15 (permalink)) Старый
Maugly Maugly вне форума
Member
 
Сообщений: 78
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.09.2002
По умолчанию 11.01.2003, 17:05

Visual C++ 7.0 без оптимизации.

если ставить оптимизацию (любую) получается так:

Код:
if (~i&1)
mov         eax,dword ptr [esp+4] 
not         eax  
test        al,1 
je          do_if_even+17h (401017h)
{...

if (!(i%2))
mov         eax,dword ptr [esp+4] 
and         eax,80000001h 
jns         do_if_even+10h (401010h) 
dec         eax  
or          eax,0FFFFFFFEh 
inc         eax  
(401010h): jne         do_if_even+1Fh (40101Fh) 
{...

if (!(i&1))
test        byte ptr [esp+4],1 
jne         do_if_even+14h (401014h) 
{...
в if (!(i%2)) лажанулся

есть один нюанс во всех случаях: 0 будет считаться четным.
Ads