• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Specyfikatory formatu - Język C

0 głosów
1,761 wizyt
pytanie zadane 1 lutego 2020 w Rozwój zawodowy, nauka, praca przez Ferrow Początkujący (360 p.)
WItajcie. Uczę się właśnie na egzamin z podstaw programowania języka C na studiach informatycznych i pewna rzecz jest dla mnie nie do końca zrozumiała. Mianowice specyfikatory formatu. Zauważyłem, że w kompilatorze niektóre specyfikatory wydają się być niepotrzebne. Np. gdy damy specyfikator dla "long" czyli "%ld" to wyjdzie ten sam wynik, gdybyśmy dali samo "%d". Zależnie od typów zmiennych jest też tak w stałych tzn. 21l lub 21L zachowuje się tak samo gdybyśmy wpisali samą liczbę 21. Ponadto nie rozumiem sensu wprowadzania różnych wielkości zarówno specyfikatorów jak i literałów, ponieważ przy " LE" gdy damy np. 9.5E-04L to wyświetli nam się praktycznie to samo tylko z małą literą "e" w przypadku gdy literał będzie identyczny. Dodatkowo nie ma pojęcia dlaczego w każdym przypadku wyświetla inna liczba(ale w każdym ta sama). Proszę o pomoc i wyjaśnienie.

1 odpowiedź

0 głosów
odpowiedź 1 lutego 2020 przez tangarr Mędrzec (155,180 p.)
Funkcja printf nie rozróżnia typów przekazanych zmiennych. Całe sterowanie odbywa się przy pomocy specyfikatorów formatu.
Jeżeli przekażesz liczbę 8 bajtową (long long) i podasz specyfikator %d to funkcja odczyta tylko 2 lub 4 bajty (zależne od architektury).
Wszystko masz opisane tutaj http://www.cplusplus.com/reference/cstdio/printf/
komentarz 1 lutego 2020 przez Ferrow Początkujący (360 p.)
Ok Dziękuje, to dużo wyjaśnia. Czy mam rozumieć że wielkość specyfiaktora "E", "e" itd ma znaczenie czysto estetyczne?
komentarz 1 lutego 2020 przez tkz Nałogowiec (42,060 p.)

Z tabelki wynika, że tak. 

specifier Output Example
or i Signed decimal integer 392
u Unsigned decimal integer 7235
o Unsigned octal 610
x Unsigned hexadecimal integer 7fa
X Unsigned hexadecimal integer (uppercase) 7FA
f Decimal floating point, lowercase 392.65
F Decimal floating point, uppercase 392.65
e Scientific notation (mantissa/exponent), lowercase 3.9265e+2
E Scientific notation (mantissa/exponent), uppercase 3.9265E+2
g Use the shortest representation: %e or %f 392.65
G Use the shortest representation: %E or %F 392.65
a Hexadecimal floating point, lowercase -0xc.90fep-2
A Hexadecimal floating point, uppercase -0XC.90FEP-2
c Character a
s String of characters sample
p Pointer address b8000000
n Nothing printed.
The corresponding argument must be a pointer to a signed int.
The number of characters written so far is stored in the pointed location.
 
% A % followed by another % character will write a single % to the stream. %

Podobne pytania

0 głosów
2 odpowiedzi 1,522 wizyt
0 głosów
0 odpowiedzi 428 wizyt
0 głosów
1 odpowiedź 669 wizyt
pytanie zadane 19 czerwca 2018 w Rozwój zawodowy, nauka, praca przez Alan Kruszyński Obywatel (1,410 p.)

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...