No ... non ci sono problemi di overflow ... quello che fa il compilatore e' questo

codice:
00411B4E E8 2C F8 FF FF   call        @ILT+890(_rand) (41137Fh) 
00411B53 88 45 FB            mov       byte ptr [c],al
ovvero, ignora i byte piu' significativi.

Semmai mi sembra che manchi l'inizializzazione del generatori di numeri pseudorandom ... andrebbe aggiunta una

codice:
srand( (unsigned)time( NULL ) );