Jaki jest prawidłowy sposób iteracji po wektorze w C ++? Rozważ te dwa fragmenty kodu, ten działa dobrze: for (unsigned i=0; i < polygon.size(); i++) { sum += polygon[i]; } i ten: for (int i=0; i < polygon.size(); i++) { sum += polygon[i]; } który generuje warning: comparison between signed …
Czy słusznie mogę powiedzieć, że różnica między liczbą całkowitą ze znakiem i bez znaku jest następująca: Unsigned może zawierać większą wartość dodatnią i brak wartości ujemnej. Unsigned używa bitu wiodącego jako części wartości, podczas gdy wersja podpisana używa bitu najbardziej w lewo, aby określić, czy liczba jest dodatnia czy ujemna. …
Mam poniżej prosty program: #include <stdio.h> #define INT32_MIN (-0x80000000) int main(void) { long long bal = 0; if(bal < INT32_MIN ) { printf("Failed!!!"); } else { printf("Success!!!"); } return 0; } Warunek if(bal < INT32_MIN )jest zawsze spełniony. Jak to jest możliwe? Działa dobrze, jeśli zmienię makro na: #define INT32_MIN …
W książce „Complete Reference of C” jest wspomniane, że chardomyślnie jest bez znaku. Ale próbuję to zweryfikować za pomocą GCC, a także Visual Studio. Domyślnie przyjmuje to jako podpisane . Który jest prawidłowy?
Czy ten kod zawsze daje wynik fałszywy? Obie zmienne są liczbami int ze znakiem uzupełnienia do dwóch. ~x + ~y == ~(x + y) Wydaje mi się, że powinna istnieć liczba spełniająca warunki. Próbowałem sprawdzić liczby pomiędzy -5000i, 5000ale nigdy nie osiągnąłem równości. Czy istnieje sposób na utworzenie równania, aby …
Chcę przekonwertować ciąg szesnastkowy na 32-bitową liczbę całkowitą ze znakiem w C ++. Na przykład mam ciąg szesnastkowy „fffefffe”. Binarna reprezentacja tego to 11111111111111101111111111111110. Reprezentacja liczb całkowitych ze znakiem to: -65538. Jak wykonać tę konwersję w C ++? To również musi działać dla liczb nieujemnych. Na przykład ciąg szesnastkowy „0000000A”, …
C ++ 20 wprowadził std::ssize()bezpłatną funkcję, jak poniżej: template <class C> constexpr auto ssize(const C& c) -> std::common_type_t<std::ptrdiff_t, std::make_signed_t<decltype(c.size())>>; Wydaje się static_cast, że możliwa implementacja polega na przekształceniu wartości zwracanej size()funkcji składowej klasy C na jej podpisany odpowiednik. Ponieważ size()funkcja składowa C zawsze zwraca wartości nieujemne, dlaczego ktoś miałby chcieć …
Próbuję zrozumieć, dlaczego poniższy kod nie generuje ostrzeżenia we wskazanym miejscu. //from limits.h #define UINT_MAX 0xffffffff /* maximum unsigned int value */ #define INT_MAX 2147483647 /* maximum (signed) int value */ /* = 0x7fffffff */ int a = INT_MAX; //_int64 a = INT_MAX; // makes all warnings go away unsigned …
Na pierwszy rzut oka to pytanie może wydawać się duplikatem pytania Jak wykryć przepełnienie liczb całkowitych? jednak w rzeczywistości jest znacząco inny. Odkryłam, że podczas wykrywania przepełnienia całkowitą bez znaku jest dość trywialne, wykrywanie podpisane przepełnienie w C / C ++ jest rzeczywiście trudniejsze, niż sądzi większość ludzi. Najbardziej oczywistym, …
Byłem ciekawy, co się stanie, jeśli przypiszę wartość ujemną do zmiennej bez znaku. Kod będzie wyglądał mniej więcej tak. unsigned int nVal = 0; nVal = -5; Nie dało mi to żadnego błędu kompilatora. Kiedy uruchomiłem program, nValprzypisano mu dziwną wartość! Czy to możliwe, że przypisywana jest wartość uzupełnienia jakiejś …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.