nigdy nie mogę zrozumieć, jak drukować unsigned long
typ danych w CJak wydrukowaćf "unsigned long" w C?
Załóżmy unsigned_foo
jest unsigned long
, potem próbuję:
printf("%lu\n", unsigned_foo)
printf("%du\n", unsigned_foo)
printf("%ud\n", unsigned_foo)
printf("%ll\n", unsigned_foo)
printf("%ld\n", unsigned_foo)
printf("%dl\n", unsigned_foo)
I wszystkie z nich wydrukować jakiś -123123123
liczby zamiast unsigned long
że mam.
Ups, '% lu' pracował tym razem. Dzięki. Coś jeszcze musiało się wydarzyć i nie zadziałało. – bodacydo
@bodacydo: Jeśli masz błąd, może pojawić się on częściowo losowo ... upewnij się, że zmienna ma poprawną wartość, zanim spróbujesz go wydrukować. – Thanatos
Nawet jeśli zmienna jest niezainicjowana, nie powinno być żadnego sposobu, aby printf osiągnął punkt, w którym mógłby wydrukować znak minus, gdy specyfikator formatu byłby "% lu". Technicznie jest to niezdefiniowane zachowanie, ale w rzeczywistości zmienna ma nieprzewidywalną wartość, która zostaje przekazana do printf, którego printf następnie interpretuje jako unsigned. Domyślam się, że oryginalnym problemem bodacydo był przepływ do nieprawidłowego wywołania printf zamiast zamierzonego ... –