[C] Meglio switch o if-else

di il
3 risposte

[C] Meglio switch o if-else

Chiedo a voi esperti se utilizzare switch è equivalente a if-else o se esistono situazioni in cui è più indicato uno dei due.

3 Risposte

  • Re: [C] Meglio switch o if-else

    Grazie mille wrugg25
  • Re: [C] Meglio switch o if-else

    Un criterio assolutamente fondamentale per la scelta tra le due strutture di controllo è la cardinalità dell'insieme di valori numerici da controllare. Una switch su una trentina di casi è già oltre i limiti dell'accettabilità nella schiacciante maggioranza dei contesti applicativi ed indica quasi sempre marchiani errori progettuali: in quasi tutti i casi degeneri si possono e si devono usare tabelle LUT o jump tables esplicite, mappando il set di valori di controllo sull'intervallo iniziale dei naturali [0, n], anche tramite hash.
    In buona sostanza, nel classico gestionalone C con milleduecento voci di menu esiste sicuramente una banalissima funzione blackbox che prende in input un tasto dalla tastiera e, tenendo conto della posizione attuale nel menu tree, sputa fuori direttamente un puntatore alla funzione da richiamare. Sarebbe semplicemente demenziale procedere diversamente, con una switch esplicita per ogni caso, anche se nel mainstream non mancavano geni capaci di fare questo e altro.

    Per contro, la if() è lo statement di controllo per eccellenza previsto implicitamente dal teorema di Bohm-Jacopini (qualsiasi algoritmo praticamente computabile può essere implementato in un linguaggio che consenta sequenze, scelte e cicli) e la sua applicabilità è praticamente universale.
  • Re: [C] Meglio switch o if-else

    Grazie anche a M.A.W. 1968, sempre gentile e super approfondito
Devi accedere o registrarti per scrivere nel forum
3 risposte