In questo codice non c'è molto da ottimizzare. A livello logico e di progettazione del codice se puoi risparmiare tempo della CPU e memoria avendo gli stessi risultati è bene ma bisogna valutare anche quanto ti costa in termini di sviluppo sia per tempo che per quantità di codice. In facoltà di ingegneria (che non ho frequentato) si parla spesso di Big O notation, l'esempio accademico classico di ottimizzazione puoi trovarlo nel paragone tra una ricerca lineare e una ricerca binaria su dati ordinati, nel primo hai nel peggior caso una complessità O(n) che prende sempre più tempo più gli elementi aumentano, nel secondo O(log n) che riesce a trovare un valore tra miliardi con una manciata di controlli. Tuttavia nella pratica quando scrivi codice non è necessario fare calcoli di complessità se non stai programmando i controlli della stazione spaziale o un dispositivo con poca capacità di batteria, ti basta cercare di riassumere il risultato che vuoi ottenere in codice togliendo passaggi superflui, poi l'esperienza ti farà essere più rapido ed individuare questi passaggi a colpo d'occhio.
Poi il compilatore di C ti aiuta, l'ottimizzazione è una parte importantissima e la sua implementazione è tra i codici più complessi del mondo, infatti se vai ad analizzare il binario prodotto da un tuo sorgente vedrai che molte delle istruzioni sono state stravolte perché il compilatore ha trovato un modo più efficiente per farlo a basso livello (ovviamente il senso rimane quello, non ti sostituirà la ricerca lineare con quella binaria, ma cercherà di velocizzare quella lineare in base al contesto).
Poi il compilatore di C ti aiuta, l'ottimizzazione è una parte importantissima e la sua implementazione è tra i codici più complessi del mondo, infatti se vai ad analizzare il binario prodotto da un tuo sorgente vedrai che molte delle istruzioni sono state stravolte perché il compilatore ha trovato un modo più efficiente per farlo a basso livello (ovviamente il senso rimane quello, non ti sostituirà la ricerca lineare con quella binaria, ma cercherà di velocizzare quella lineare in base al contesto).