Oppure

Loading
10/01/11 17:00
ciao888
praticamente nel programma c'era scritto:
if (i % 2)
i = i++

ma che significa i % 2?nel senso se i è divisibile?grazie
aaa
10/01/11 17:08
hai aperto 4 topic di fila, se sbagli qualcosa ricorda che c'è la funzione EDIT.
10/01/11 17:10
ciao888
sì infatti me ne sono accorta adesso,2 topic dovevo cancellarli ma non so come si fa
aaa
10/01/11 17:12
John
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:

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!
aaa
10/01/11 17:14
ciao888
ah ok,grazie mille
aaa
10/01/11 17:14
HeDo
Postato originariamente da John:

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:

if (i % 2==1) 
i = i++ 



cagata astronomica :)

l'equivalente "niubbo" è:

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.

aaa
11/01/11 1:05
pierotofy
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:

if (i & 1){
  // Dispari
}else{
  // Pari
}

Il mio blog: piero.dev