[C] Operatore / e operatore %.

Messaggioda SirDanielFortesque » 18/11/2018, 13:45

Sono all'inizio del linguaggio C e quindi sembrerà una domanda semplice ma non ho capito questo estratto dal testo che sto usando per studiare:

"Descrivere il risultato del caso in cui / o % vengono utilizzati con un operando negativo è complesso. Lo standard C89 afferma che se un operando è negativo il risultato della divisione può essere arrotondato sia per eccesso che per difetto (per esempio il valore di -9/7 può essere sia -1 che -2). Per il C89 se le variabili i e j sono negative allora il segno di i%j dipende dall'implementazione (per esempio -9%7 può valere sia -2 che 5). D'altra parte per lo standard C99 il risultato di una divisione viene sempre arrotondato verso lo zero (quindi -9/7 è sempre uguale a -1) ed il valore di i%j ha sempre lo stesso segno di i (dunque -9/7 è pari a -2)."

Ecco io non capisco come fa -9%7 a poter valere 5. Da dove esce il 5?

-9/7 farà sempre -1, quindi, dalla definizione di divisione:

$-9=-1*7+r$ da cui $r=-2$.
Forse ho un dubbio più sulla definizione di resto, non saprei.
[Il testo è "programmazione in C" di Kim N. King, p.56].
Conoscete la storia del Conte Giacomo Ceconi?
Avatar utente
SirDanielFortesque
Advanced Member
Advanced Member
 
Messaggio: 227 di 2184
Iscritto il: 27/12/2016, 08:35
Località: Milano.

Re: [C] Operatore / e operatore %.

Messaggioda Obidream » 18/11/2018, 14:12

Non conoscevo il libro, gli darò uno sguardo perché è interessante che spieghi queste differenze tra gli standard, comunque:

$a mod b = text{Resto}+ a/b$ quindi se $a/b = q$ e $text{Resto} = r$

$a mod b = q + r$

Se $a < 0$:

$a mod b = b - r$

Quindi nel tuo caso:

$a=-9$, $b=7$, $r=2$

$-9 < 0 => -9 mod 7 = 7 - 2 = 5$
((v & 0xff) && (v & 0xff00) && (v & 0xff0000) && (v & 0xff000000))
Avatar utente
Obidream
Advanced Member
Advanced Member
 
Messaggio: 961 di 2195
Iscritto il: 07/02/2012, 20:57

Re: [C] Operatore / e operatore %.

Messaggioda SirDanielFortesque » 18/11/2018, 15:18

Ok, grazie. Quindi dipende tutto, di fatto, dal risultato della divisione. Se -9/7=-2 si ha=
$-9=-2*7+r$
da cui appunto $r=5$.
Il libro è un tomo di oltre 700 pagine, pensare che l'esame è già a febbraio...
Conoscete la storia del Conte Giacomo Ceconi?
Avatar utente
SirDanielFortesque
Advanced Member
Advanced Member
 
Messaggio: 228 di 2184
Iscritto il: 27/12/2016, 08:35
Località: Milano.

Re: [C] Operatore / e operatore %.

Messaggioda SirDanielFortesque » 18/11/2018, 16:48

Avrei ancora una domanda, che è un esercizio.

L'espressione

(dato "total" varabile intera)

9-((total-1)%10) è equivalente a

(10-(total%10))%10
? E perché?

Ho provato per esempio a porre total=20 ed in effetti sono equivalenti. Come faccio a dimostrarlo/a passare da una all'altra?
Conoscete la storia del Conte Giacomo Ceconi?
Avatar utente
SirDanielFortesque
Advanced Member
Advanced Member
 
Messaggio: 234 di 2184
Iscritto il: 27/12/2016, 08:35
Località: Milano.


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite