operatory
Ostatnio zmodyfikowano 2018-05-08 19:28
kuba556 Temat założony przez niniejszego użytkownika |
operatory » 2018-05-08 15:54:52 Witam! Mam takie pytanie:
Czym różnią się operatory ! I w języku C? Dlaczego !0 jest równe 1 , a 0 jest równe -1
Wiem, że operator ! jest operatorem negacji, a operator I operatorem bitowym or (chyba, że się mylę).
!0 - to wyrażenie jest prawdą czyli jest równe 1
Dlaczego 0 jest równe -1? |
|
jankowalski25 |
» 2018-05-08 16:57:27 Czym różnią się operatory ! I w języku C? |
operator ! jest jednoargumentowy, operator I nie istnieje, a operator | jest dwuargumentowy (oczywiście przeciążanie operatorów jest możliwe w C++, a nie w C). Dlaczego 0 jest równe -1? |
Nie jest, nie było i raczej nie będzie. To dwie zupełnie różne wartości. Podaj kod, w którym występuje taki problem. Co do potencjalnego rozwiązania, to spodziewam się, że próbujesz wywołać jednoargumentowo | 0 , a na przykład lewa strona zawiera coś, co akurat daje -1. |
|
kuba556 Temat założony przez niniejszego użytkownika |
» 2018-05-08 18:12:06 Być może o to chodziło |0 W tym zadaniu jest chyba błąd, ale nie ja go zrobiłem takie otrzymałem. Dlaczego wyrażenie wywołane z jednym argumentem |0 równa się -1? |
|
md37 |
» 2018-05-08 18:19:38 A czy coś jest przed |0 ? |
|
Monika90 |
» 2018-05-08 19:11:05 ~0 może być równe -1, ale nie musi, równie dobrze może być równe -0 albo -32767. |
|
kuba556 Temat założony przez niniejszego użytkownika |
» 2018-05-08 19:14:23 Przed |0 nic nie ma. |
|
kuba556 Temat założony przez niniejszego użytkownika |
» 2018-05-08 19:16:17 Monika czemu tak jest? |
|
jankowalski25 |
» 2018-05-08 19:28:20 Bo ~0 oznacza zanegowanie wszystkich bitów. Czyli na przykład gdy sizeof( int ) == 4 , to otrzymasz 4 bajty (32 bity) jedynek. Interpretacja takiej wartości zależy od używanego kodowania. W uzupełnieniu do dwóch (U2) będzie to -1, w kodowaniu znak-moduł (ZM) wyjdzie -INT_MAX (czyli -32767, gdy sizeof( int ) == 2 ), a w jeszcze innym kodowaniu (na przykład Binary Coded Decimal) to może nawet nie stanowić żadnej prawidłowej wartości. |
|
« 1 » |