Co to są specyfikatory formatu Format %UL i %?
Na początek należy zauważyć, że oba %ul I %lu Specyfikatory formatu są używane podczas programowania w C i oba reprezentują niepodpisane długie typy danych. Jednak pozycja liter „l" I "u" różni się. Listy "u" I "L”Oznacz„niepodpisany" I "długi,Odpowiednio. Zamierzony typ argumentu jest określany przez sekwencję tych liter. „„%u”Określa, że znak lub ciąg, do którego jest stosowany, ma typ danych niepodpisanego int podczas "%l”Część określa, że jest to niepodpisany długi typ danych. Innymi słowy, %ul Wskazuje niepodpisane długie typu danych, a %lu Wskazuje to samo, ale z dodatkowym „długi„Modyfikator rozmiaru.
W rezultacie, jeśli używasz %ul Na zmiennej, która nie jest niepodpisaną długą liczbą całkowitą, możesz uzyskać sufiks l Na końcu wyjścia. Podczas próby wydrukowania zmiennej z określonym typem danych ważne jest użycie odpowiedniego specyfikatora formatu.
Oto jakiś przykładowy kod pokazujący, jak %ul I %lu Specyfikatory formatu różnią się:
%specyfikator formatu UL w C
#włączać
int main ()
niepodpisany długi int i = 1234567890;
printf („Używanie specyfikatora formatu %% ul: %ul \ n”, i);
powrót 0;
W powyższym kodzie definiujemy zmienną I jako niepodpisana długa liczba całkowita i zainicjuj ją 1234567890. printf polecenie używa następnie %ul Specyfikator formatu do wydrukowania wartości I. Ponieważ po prostu %u jest głównym składnikiem specyfikatora i L jest poza formatem, wydrukuje liczbę z sufiksem l na końcu.
Wyjście
%specyfikator formatu formatu w C
#włączać
int main ()
niepodpisany długi int i = 1234567890;
printf („Używanie specyfikacji formatu %% lu: %lu \ n”, i);
powrót 0;
W powyższym kodzie niepodpisana zmienna długiej liczby całkowitych I jest zadeklarowany i inicjowany do 1234567890, a następnie wydrukowany za pomocą %lu Specyfikator formatu.
Wyjście
Różnice między specyfikatorem formatu Formatu %UL i %w C
1: Zakres wartości
Główna różnica między %ul I %lu ma związek z zakresem wartości, które mają reprezentować. Podczas programowania w C niepodpisany typ długich danych używa innego formatu niż inne typy danych, w tym typ danych danych bezpodowiny INT. 32-bitowy INT wymaga tylko 32 bitów pamięci do przechowywania jej wartości, podczas gdy długi niepodpisany wymaga 64 bitów dla tego samego rodzaju danych, a tym samym ma bardziej znaczący zakres niż INT. To znaczy że %ul przyjmie wartości od 0 do +2^32-1, podczas gdy %lu Specyfikator przyjmie wartości od 0 do +2^64-1.
2: Precyzja
Istnieje również różnica w precyzji wartości, które mają reprezentować. Z %ul specyfikator, programista jest w stanie reprezentować tylko wartości do 2^32-1, podczas gdy %lu Specyfikator może reprezentować wartości do 2^64-1. Chociaż na pierwszy rzut oka może to nie wydawać się dużą różnicą, może to pośrednio wpłynąć na dokładność wyników. Program zaprojektowany do przechowywania wartości, na przykład zakres +2^64 będzie napotykać błędy podczas używania %ul specyfikatory, ponieważ nie będą w stanie przechowywać danych w pożądanym formacie, co doprowadziło do utraty dokładności.
3: Pamięć
Wreszcie, %ul I %lu różnią się również używaniem pamięci. %ul Specyfikator wymaga 32 bitów pamięci dla danych, podczas gdy %lu wymaga 64 bitów dla tego samego rodzaju danych, co oznacza, że %lu zajmuje około dwa razy więcej pamięci niż %ul. Może to nie wydawać się ogromną różnicą w małych programach o niskiej skali, ale może to szybko stać się niemożliwe, ponieważ użycie pamięci programu często wzrasta wraz z złożonością, co oznacza, że to oznacza, że to %lu nie jest idealne w przypadku aplikacji na dużą skalę.
4: Format
Ważne jest, aby zrozumieć dokładny format wyjścia podczas używania %ul Lub %lu. W szczególności %ul Specyfikator formatu zawsze wyświetla liczbę całkowitą jako 8-cyfrową wartość szesnastkową, podczas gdy %lu Sformatowanie specyfikatora wyświetla liczbę całkowitą jako 8-cyfrową wartość dziesiętną. Oznacza to, że jeśli liczba całkowita jest reprezentowana jako wartość szesnastka, powinna być wydrukowana jako %ul podczas gdy jeśli liczba całkowita jest reprezentowana jako wartość dziesiętna, powinna być wydrukowana jako %lu.
Końcowe przemyślenia
Ważne jest, aby zrozumieć dokładne różnice między %ul I %lu Sformatuj specyfikatory podczas pracy z językiem C. Chociaż mogą wydawać się podobne, podstawową różnicą jest to, że %ul Format wymaga niepodpisanego parametru długiej liczby całkowitych, podczas gdy %lu Format oczekuje długiego niepodpisanego wejścia całkowitego. %ul Specyfikator formatu zawsze wyświetla liczbę całkowitą jako 8-cyfrową wartość szesnastkową, podczas gdy %lu Sformatowanie specyfikatora wyświetla liczbę całkowitą jako 8-cyfrową wartość dziesiętną. Na koniec należy zauważyć, że %ul I %lu Specyfikatory formatu można używać tylko podczas pracy ze zmiennymi, które mają typ 'długi'.