Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Label dopo if

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Label dopo if

Messaggioda Foto UtenteDavideDaSerra » 30 mar 2024, 20:53

Da prove con GCC mi risulta che per il compilatore la definizione di una label non sia trattata come un'istruzione.

ES:
Codice: Seleziona tutto
if (false)
label: printf("CIAO ");

printf("MONDO");
goto label;


stampa MONDO CIAO ...

E non da errori, mi aspetterei a runtime qualcosa come "undefined label" ma il codice esegue correttamente.
Avatar utente
Foto UtenteDavideDaSerra
213 1 7
Expert
Expert
 
Messaggi: 279
Iscritto il: 21 gen 2018, 18:41

0
voti

[12] Re: Label dopo if

Messaggioda Foto UtenteWALTERmwp » 30 mar 2024, 22:52

DavideDaSerra ha scritto:(...) mi aspetterei a runtime qualcosa come "undefined label" (...)
perché?

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
29,7k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8820
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[13] Re: Label dopo if

Messaggioda Foto UtenteGuidoB » 31 mar 2024, 0:37

Il goto in C è utile per gestire eccezioni, o saltare fuori da più di un livello di blocchi annidati (dove non basta il break).
In entrambi i casi, molti dichiarano variabili aggiuntive da utilizzare come flag ed evitare così i goto, ma è meno efficiente e spesso meno chiaro.
Insomma, in qualche raro caso il goto, considerato da molti la pecora nera del C, è utile per ottenere codice più pulito ed efficiente.

Ah, l'ho anche visto utilizzare in un'implementazione dell'algoritmo quicksort, per evitare una chiamata ricorsiva alla fine di una procedura, e permette di risparmiare posizioni di stack.
Big fan of ƎlectroYou!       Ausili per disabili e anziani su ƎlectroYou
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
Avatar utente
Foto UtenteGuidoB
17,5k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 2739
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti