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