Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

działanie modulo na liczbach unsigned

Ostatnio zmodyfikowano 2017-06-01 22:09
Autor Wiadomość
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?
P-161952
Monika90
» 2017-06-01 22:00:48
Wynik zależy od długości (bitowej) liczb typu unsigned, czyli zależy od implementacji.

P-161954
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.
P-161957
« 1 »
  Strona 1 z 1