Incidentalmente, anche con int a 16 bit la prova che hai fatto non è indicativa di nulla, dato che in C l'overflow non dà necessariamente errore... Per gli interi senza segno è garantito l'overflow con wraparound (65535+1 => 0), per quelli con segno è undefined behavior (anche se spesso si ottiene wraparaound in complemento a due).