In C, che cos'è un salto incondizionato?

1

Devo compilare una documentazione relativa a un progetto C su cui ho lavorato. Un argomento è se ho usato "salti incondizionati".

Per quanto ne so, una frase "pausa" conta come un salto. E ho alcuni di quelli che si attivano quando viene soddisfatta una condizione in un ciclo. Questo lo rende un "salto condizionato"?

Un altro esempio è quando ci sono istruzioni "break" standard in un caso di scambio, sono quelle condizionali o incondizionate?

In sostanza, cosa costituisce un "salto incondizionato" in C?

    
posta Nitkov 04.03.2015 - 12:52
fonte

2 risposte

3

È una questione terminologica.

IMHO, qualsiasi break , continue , goto , return che non è nel corpo di if o else o case è un salto incondizionato.

Quindi ovviamente

if (foobar) goto somelabel; 

è un salto condizionato.

In

if (foobar) {
   x = something();
   y = other(x);
   return;
}

Credo che il return sia condizionale. Alcune persone potrebbero obiettare che a causa delle precedenti affermazioni non è (e solo l'intero blocco è condizionale)

A proposito, ho sentito parlare di " salto incondizionato " di più quando si parla del codice macchina di qualsiasi altra cosa.

Leggi anche i blocchi di base

Credo che la tua burocrazia ti stia solo chiedendo se hai usato goto ; potresti chiedere alla tua direzione o al cliente cosa si intende realmente. Mi dispiace per te che devi perdere tempo in queste domande (IMHO stupide o inutili).

    
risposta data 04.03.2015 - 12:57
fonte
1

Condizionale significa che non può essere seguito a seconda di alcune condizioni. Incondizionato significa che il flusso del programma raggiunge quel punto che continuerà sempre al target.

A if e a switch sono salti condizionali.

Alla fine della clausola then di if è un salto incondizionato a dopo la clausola else . break s in un interruttore sono anche incondizionati.

    
risposta data 04.03.2015 - 12:56
fonte

Leggi altre domande sui tag