Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - espressione i%2
Forum - C/C++ - espressione i%2

Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Segnala al moderatore
Postato alle 18:00
Lunedì, 10/01/2011
praticamente nel programma c'era scritto:
Codice sorgente - presumibilmente C/C++

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


ma che significa i % 2?nel senso se i è divisibile?grazie

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 18:08
Lunedì, 10/01/2011
hai aperto 4 topic di fila, se sbagli qualcosa ricorda che c'è la funzione EDIT.

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 18:14
Lunedì, 10/01/2011
Testo quotato

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:

Codice sorgente - presumibilmente C/C++

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





cagata astronomica :)

l'equivalente "niubbo" è:

Codice sorgente - presumibilmente C/C++

  1. 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.


PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Up
0
Down
V
Segnala al moderatore
Postato alle 2:05
Martedì, 11/01/2011
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:

Codice sorgente - presumibilmente C/C++

  1. if (i & 1){
  2.   // Dispari
  3. }else{
  4.   // Pari
  5. }




Il mio blog: https://piero.dev
PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 18:10
Lunedì, 10/01/2011
sì infatti me ne sono accorta adesso,2 topic dovevo cancellarli ma non so come si fa

PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 18:14
Lunedì, 10/01/2011
ah ok,grazie mille

PM
Avatar
John (Ex-Member)
Pro


Messaggi: 191
Iscritto: 18/11/2007

Up
-3
Down
V
Segnala al moderatore
Postato alle 18:12
Lunedì, 10/01/2011
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++

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



quindi se I diviso 2 da resto 1 (% è l'operazione modulo), ovvero I è dispari.

L'istruzione viene quindi eseguita se i è dispari!

PM