Co wypisze program - zaokrąglenie liczby

0

Dlaczego taka komenda:

printf("4) %.2lf\n", 4/9);

wypisuje wartość 0.5 a nie 0.4? 4/9 = 0.44 więc powinno w dół zaokrąglać?

1
printf("4) %.2lf\n", 4/9);

Ten kod wypisuje losową wartość: http://ideone.com/GE58tL, pewnie dlatego że wynik 4/9 to 0 (dzielenie całkowitoliczbowe).

printf("4) %.2lf\n", 4/(float)9); 

Ten kod wypisuje 0.44, a nie żadne 0.5 czy 0.4.

0

user image

Kod programu:

 #include <stdio.h>
#include <stdlib.h>

int main()
{
    int z1 = 4, z2 = 8;
    int m = 1;
    int t[10] = {-1,-2,-3};
    char s1[30] = "programowanie", s2[30] = "strukturalne";
    double z =(++z2-(z1--))%--z1;

    printf("1) %.1lf\n", z/3);
    printf("2) %d\n", --s1[2]<*s2);
    printf("3) %c\n", *(strlen(s1)-4+s1));
    printf("4) %.2lf\n", !(z1%z2--)+ 2.0*z1/z2);
    printf("5) %d\n",(3*(++*(t+2)>>2)));
    printf("6) %d\n", !(!z2|| --z1));

    printf("4) %.2lf\n", 4/9);

    return 0;
}

Ale chodzi tylko o ostatni ten wypis.

0

Bo ten program jest niepoprawny. Jego zachowanie jest niezdefiniowane: http://4programmers.net/Forum/1109355
Ciekawostka: zakomentuj linię:

printf("4) %.2lf\n", !(z1%z2--)+ 2.0*z1/z2);

i dostaniesz inny wynik przy ostatnim wypisaniu.

Albo zmień ostatnią liniję w swoim programie na:

printf("4) %.2lf\n", 0);

i podziwiaj wynik :P

1

Może nie losową, ale przypadkową. Wyświetlasz zmienną całkowitą 4/9 korzystając z formatu liczb zmiennoprzecinkowych "%.2lf". To co się pojawi na ekranie ma bardzo luźny związek z faktyczną wartością zmiennej.

0

to ja nie wiem jak to interpretować. My takie zadania mamy mieć na egzaminie z podstaw programowania.

0

Idź do wykładowcy i powiedz mu, że ma niepoprawny program.

2

Już mówiłem. Te kody to totalne bzdury. Nie dość, że są błędne to nie mają niczego wspólnego z programowaniem.

Serio. Co to za przedmiot, kierunek i uczelnia?

Napisz autorowi tych zadań, że tak Ci tutaj powiedzieli. Jak będzie chciał dowodów, że to bzdury, to niech przeczyta sobie standard języka C - mogę podać konkretne miejsca.

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