działanie modulo na liczbach unsigned
Ostatnio zmodyfikowano 2017-06-01 22:09
vwpawlusza Temat założony przez niniejszego użytkownika |
działanie modulo na liczbach unsigned » 2017-06-01 20:24:30 mam w kodzie taki zapis:
unsigned int a=6, b=0;
printf("%d", (-6*a + 4*b) % 7);
Pytanie: jaki bedzie/powinien byc wynik i dlaczego? |
|
Monika90 |
» 2017-06-01 22:00:48 Wynik zależy od długości (bitowej) liczb typu unsigned, czyli zależy od implementacji.
|
|
Kinexity |
» 2017-06-01 22:09:29 Dla unsigned int na 32 bitach wynik wynosi 3. -6 * 6 = 4294967260 4 * 0 = 0 -6 * 6 + 4 * 0 = 4294967260 (-6 * 6 + 4 * 0) % 7 = 3
Wynika to z faktu, że -6 jest traktowane jako unsigned int bez żadnego rzutowania. |
|
« 1 » |