Jakie są specyfikatory formatu w c?


Najlepsza odpowiedź

C ma wiele specyfikatorów formatu. Oczywiście istnieje jeden dla każdego typu, ale poza tym istnieją inne, tak że programista może wyświetlić zmienną określonego typu w kilku różnych reprezentacjach. Na przykład \% d wyświetli liczbę całkowitą. Ale tę samą liczbę całkowitą można również wyświetlić w formacie szesnastkowym, używając \% x. Niemniej jednak listę wszystkich oryginalnych specyfikatorów formatu C można znaleźć tutaj: Lista wszystkich specyfikatorów formatu w programowaniu w C – Codeforwin

Jednak zalecam bardziej nowoczesne podejście do pisania kodu C, które ma związek z deklarowanie zmiennych i odpowiednie ich wyświetlanie. Oznacza to użycie definicji dostarczonych przez i . Dodając te nagłówki, możesz teraz zadeklarować swoje zmienne w następujący sposób:

Źródło: Jak C (od 2016 r.)

  • int8\_t, int16\_t, int32\_t, int64\_t – liczby całkowite ze znakiem
  • uint8\_t, uint16\_t, uint32\_t, uint64\_t – liczby całkowite bez znaku
  • float – standardowa 32-bitowa zmienna punkt
  • double – standardowy 64-bitowy zmiennoprzecinkowy
  • intptr\_t, uintptr\_t, ptrdiff\_t

Ostatni punkt zawiera typy, których możesz użyć do arytmetyki wskaźników.

Teraz, biorąc pod uwagę takie typy, właściwy sposób ich wyświetlania jest następujący:

  • size\_t\%zu
  • ssize\_t\%zd
  • ptrdiff\_t\%td
  • surowe pointe wartość r – \%p (wyświetla szesnastkowo w nowoczesnych kompilatorach; rzuć swój wskaźnik na (void *) najpierw)
  • int64\_t"\%" PRId64
  • uint64\_t"\%" PRIu64 64-bitowe typy powinny być drukowane tylko przy użyciu PRI[udixXo]64 style makr. Czemu? Na niektórych platformach wartość 64-bitowa to long, a na innych jest to „sa long long. Te makra zapewniają odpowiednią podstawową specyfikację formatu w W rzeczywistości niemożliwe jest określenie prawidłowego ciągu formatu dla wielu platform bez tych makr formatu, ponieważ typy zmieniają się spod Ciebie (i pamiętaj, rzutowanie wartości przed wydrukowaniem nie jest bezpieczne ani logiczne).
  • intptr\_t"\%" PRIdPTR
  • uintptr\_t"\%" PRIuPTR
  • intmax\_t"\%" PRIdMAX
  • uintmax\_t"\%" PRIuMAX

Przykład drukowania jednego z tych typów:

printf("Local number: \%" PRIdPTR "\n\n", someIntPtr);

Zwróć uwagę, że PRIdPTR jest poza cudzysłowami, ale tuż po znaku procentu. Dość denerwujące składniowo rzeczywiście.

W każdym razie, mam nadzieję, że to odpowiada większości na to, do czego byłeś król dla. Informacje podane na temat używania języka C w nowocześniejszy sposób dotyczące typów danych i wyświetlania ich za pomocą specjalnych specyfikatorów formatu pochodzą ze świetnego dokumentu, który sugeruję przeczytać How to C (od 2016 r.) .

Nie zapominaj również, że możesz wyszukiwać specyfikatory formatu i wszystkie rzeczy związane z printf () na stronach podręcznika. Jeśli korzystasz z systemu UNIX lub UNIX, po prostu otwórz swoją powłokę i

bash$ man printf

Również Google jest Twoim przyjacielem…; -)

Odpowiedź

Specyfikatory formatu zaczynają się od wartości procentowej \% , po którym następuje specjalny znak identyfikujący typ danych.

Istnieje głównie 6 typów specyfikatorów formatu , które są dostępne w C.

Lista specyfikatorów formatu w C

Specyfikator formatu liczby całkowitej\% d

\% d specyfikator formatu jest zaimplementowany do reprezentowania wartości całkowitych. Jest to używane z funkcją printf () do wypisywania wartości całkowitej przechowywanej w zmiennej.

Składnia:

printf("\%d",);

Specyfikator formatu swobodnego\% f

\% f specyfikator formatu jest zaimplementowany do reprezentowania wartości ułamkowych. Jest to zaimplementowane w funkcji printf () do drukowania wartości ułamkowej lub zmiennoprzecinkowej przechowywanej w zmiennej. Zawsze, gdy chcesz wydrukować dane ułamkowe lub zmienne, musisz użyć specyfikatora formatu \% f .

Składnia:

printf("\%f", );

Specyfikator formatu znaków \% c

Specyfikator formatu \% c jest zaimplementowany do reprezentowania znaków. Jest to używane z funkcją printf () do drukowania znaku przechowywanego w zmiennej. Chcąc wydrukować dane znakowe, należy uwzględnić specyfikator formatu \% c .

Składnia:

printf("\%c",);

Specyfikator formatu ciągu\% s

\% s specyfikator formatu jest zaimplementowany do reprezentowania ciągów. Jest to używane w funkcji printf () do drukowania łańcucha zapisanego w zmiennej tablicy znaków. Kiedy musisz wydrukować ciąg znaków, powinieneś zaimplementować specyfikator formatu \% s .

Składnia:

printf("\%s",);

Specyfikator formatu liczby całkowitej bez znaku\% u ​​

\% u specyfikator formatu jest zaimplementowany do pobierania wartości z adresu zmiennej mającej zapisaną w pamięci liczbę całkowitą bez znaku. Jest to używane w funkcji printf () do drukowania zmiennej całkowitej bez znaku.

Składnia:

printf("\%u",);

Specyfikator formatu długiego int\% ld

Specyfikator formatu \% ld jest zaimplementowany do reprezentowania długich wartości całkowitych. Jest to zaimplementowane za pomocą funkcji printf () do drukowania długiej liczby całkowitej przechowywanej w zmiennej.

Składnia:

printf("\%ld",);

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *