Formaty wyświetlania liczb

0

Czy może ktoś sprawdzić, czy dobrze skomentowałem poszczególne linie, bo w chwili obecnej nie mam żadnego porównania (chodzi o to, czy poprawnie się wyświetla liczba)?

int main (void) {
  printf("Zadanie 11.\n");
  printf("\n");
  printf("d: %d\n",-5);//poprawnie
  printf("d: %o\n",-5);//blednie
  printf("d: %u\n",-5);//blednie
  printf("d: %f\n",-5);//blednie
  printf("d: %e\n",-5);//blednie
  printf("d: %g\n",-5);//blednie
  printf("d: %s\n",-5);//wywalilo program
}
int main (void) {
  printf("Zadanie 12.\n");
  printf("\n");
  printf("d: %d\n",-5.0);//blednie
  printf("d: %o\n",-5.0);//blednie
  printf("d: %u\n",-5.0);//blednie
  printf("d: %f\n",-5.0);//poprawnie
  printf("d: %e\n",-5.0);//poprawnie
  printf("d: %g\n",-5.0);//poprawnie
  printf("d: %s\n",-5.0);//wywalilo program
}

Bardzo dziękuję i idę już spać.

2

Odpowiadam n/t pierwszej części

  • Drukowanie w formacie ósemkowym liczby ujemnej jest OK, będzie w wyniku tekstowym sporo siódemek.
  • Drukowanie w formacie unsigned liczby ujemnej jest jakąś przypadłością
  • Zmiennoprzecinkowe formaty i integery są istotnym błędem
  • Format %s i liczba jest zbrodnią (co Ci wyszło - liczba jest interpretowana jako wskaźnik, być może uzupełniana o zera, zależnie od architektury)

Drugiej

  • do liczby rzeczywistej tylko formaty rzeczywiste (e,f,g) są prawidło - skomentowałeś prawidłowo

Thank @enedil za komentarz

0
AnyKtokolwiek napisał(a):

Odpowiadam n/t pierwszej części

  • Drukowanie w formacie ósemkowym liczby ujemnej jest OK, będzie w wyniku tekstowym sporo siódemek.
  • Drukowanie w formacie unsigned liczby ujemnej jest jakąś przypadłością
  • Zmiennoprzecinkowe formaty i integery są istotnym błędem
  • Format %s i liczba jest zbrodnią (co Ci wyszło - liczba jest interpretowana jako wskaźnik, być może uzupełniana o zera, zależnie od architektury)

Drugiej

  • do liczby rzeczywistej tylko formaty rzeczywiste (e,f,g) są prawidło - skomentowałeś prawidłowo

Thank @enedil za komentarz

Tak brzmiało zadanie, nic na to nie poradzę i nie bardzo rozumiem ten fragment od unsigned. W poleceniu było też, żeby sprawdzić %s z liczbą i wtedy program się całkiem wyłącza. To dobrze czy źle? Mógłbyś/Mogłabyś jeszcze napisać, co robią poszczególne formaty od %u (z wyjątkiem %s)??

0

Format %s oczekuje wskaźnika (na literki), dostaje liczbę, traktuje ją jako wskaźnik, oczywiście prowadzący gdzieś w krzaki. W systemie z ochroną (a współcześnie tylko takie mamy) proces jest zabijany.

Unsigned, no dobra, traktuj jako błąd. Takie moje rozważania, że błąd jest "lekki", nie wchodzę w szczegóły.

Formatów nie będę opisywał, to jest w każdym dobrym podręczniku

0
AnyKtokolwiek napisał(a):

Format %s oczekuje wskaźnika (na literki), dostaje liczbę, traktuje ją jako wskaźnik, oczywiście prowadzący gdzieś w krzaki. W systemie z ochroną (a współcześnie tylko takie mamy) proces jest zabijany.

Unsigned, no dobra, traktuj jako błąd. Takie moje rozważania, że błąd jest "lekki", nie wchodzę w szczegóły.

Formatów nie będę opisywał, to jest w każdym dobrym podręczniku

No widzisz, a nam nie dali podręczników.. Mam jakąś grupą księgę dotyczącą C++ (w C pewnie działają podobnie), ale nie widziałem tam formatów. Z tego co mi się wydaje, to unsigned po prostu nie zwraca znaku (sądzę tak po nazwie), tak?

2
irek5000 napisał(a):
AnyKtokolwiek napisał(a):

Format %s oczekuje wskaźnika (na literki), dostaje liczbę, traktuje ją jako wskaźnik, oczywiście prowadzący gdzieś w krzaki. W systemie z ochroną (a współcześnie tylko takie mamy) proces jest zabijany.

Unsigned, no dobra, traktuj jako błąd. Takie moje rozważania, że błąd jest "lekki", nie wchodzę w szczegóły.

Formatów nie będę opisywał, to jest w każdym dobrym podręczniku

No widzisz, a nam nie dali podręczników.. [...]

Nie wiem czy to szkoła średnia czy studia, ale nie wszystko będzie podawane na tacy. Czasami warto samemu wyjść z inicjatywą i poszukać na własną rękę. To ci pomoże szybciej rozwiązać problem i nawet otrzymać ekstra punkty za zaangażowanie. Odpowiedź na forum nie otrzymasz od razu, a jeżeli już to nie będzie tak obszerna jak na jakimś blogu, wiki, stackoverflow czy w dokumentacji.

Wystarczyło w google wpisać "znak % w printf", pierwszy wynik to link do strony w języku polskim https://pl.wikibooks.org/wiki/C/printf

0
jvoytech napisał(a):
irek5000 napisał(a):
AnyKtokolwiek napisał(a):

Format %s oczekuje wskaźnika (na literki), dostaje liczbę, traktuje ją jako wskaźnik, oczywiście prowadzący gdzieś w krzaki. W systemie z ochroną (a współcześnie tylko takie mamy) proces jest zabijany.

Unsigned, no dobra, traktuj jako błąd. Takie moje rozważania, że błąd jest "lekki", nie wchodzę w szczegóły.

Formatów nie będę opisywał, to jest w każdym dobrym podręczniku

No widzisz, a nam nie dali podręczników.. [...]

Nie wiem czy to szkoła średnia czy studia, ale nie wszystko będzie podawane na tacy. Czasami warto samemu wyjść z inicjatywą i poszukać na własną rękę. To ci pomoże szybciej rozwiązać problem i nawet otrzymać ekstra punkty za zaangażowanie. Odpowiedź na forum nie otrzymasz od razu, a jeżeli już to nie będzie tak obszerna jak na jakimś blogu, wiki, stackoverflow czy w dokumentacji.

Wystarczyło w google wpisać "znak % w printf", pierwszy wynik to link do strony w języku polskim https://pl.wikibooks.org/wiki/C/printf

Dobrze, dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1