Il codice assembler generato da VC++ 2003 (in modalita' debug) e'
codice:
00025 8b 45 f8 mov eax, DWORD PTR _p$[ebp]
00028 50 push eax
00029 e8 00 00 00 00 call ?f@@YAHH@Z ; f
0002e 83 c4 04 add esp, 4
00031 89 85 30 ff ff
ff mov DWORD PTR tv66[ebp], eax
00037 83 bd 30 ff ff
ff 01 cmp DWORD PTR tv66[ebp], 1
0003e 74 0b je SHORT $L10444
00040 83 bd 30 ff ff
ff 02 cmp DWORD PTR tv66[ebp], 2
00047 74 11 je SHORT $L10446
00049 eb 1c jmp SHORT $L10441
da cui appare evidente che viene usata una "variabile" temporanea (nell'esempio e' la tv66 ...). In modalita' Release la situazione e' analoga. A volte puo' essere utilizzato un registro della CPU (dipende dall'ottimizzazione).