Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
qualcuno chiama questo "codice elegante".. personalmente.. fa solo fare casino!
dovresti sapere che l'istruzione successiva ad un if viene eseguita se il contenuto della parentesi è true, ovvero se è uguale a 1; perciò l'espressione scritta in maniera un po' meno sintetica sarebbe:
Codice sorgente - presumibilmente C/C++
if (i % 2==1)
i = i++
cagata astronomica
l'equivalente "niubbo" è:
Codice sorgente - presumibilmente C/C++
if (i % 2 != 0)
questo credo sia uno degli errori più gravi che mi siano capitati sul forum da un bel po di tempo, attento a queste cose.
L'operatore modulo (%) ritorna il resto di una divisione. Ad esempio 5 % 2 ritorna 1 (5 / 2 = 2 con resto 1). Viene utilizzato spesso per controllare se un intero è divisibile per un altro (come nel codice che hai riportato). Nel tuo esempio il codice controlla che l'intero non è divisibile per 2 (quindi dispari) e incrementa un contatore.
Un metodo più veloce (anche se di pochissimo) è quello di scrivere:
qualcuno chiama questo "codice elegante".. personalmente.. fa solo fare casino!
dovresti sapere che l'istruzione successiva ad un if viene eseguita se il contenuto della parentesi è true, ovvero se è uguale a 1; perciò l'espressione scritta in maniera un po' meno sintetica sarebbe:
Codice sorgente - presumibilmente C/C++
if (i % 2==1)
i = i++
quindi se I diviso 2 da resto 1 (% è l'operazione modulo), ovvero I è dispari.
L'istruzione viene quindi eseguita se i è dispari!