printf nie wyświetla double

printf nie wyświetla double
  • Rejestracja: dni
  • Ostatnio: dni
0

Testując parę przykładów natrafiłem na problem,mianowicie program napisany w ten sposób

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

int main()
{

    double i;

    i = 1/2;
    printf("%f",i);

    return 0;
}

wyświetla 0.000000 .Co było dla mnie niemałym zdziwieniem.Ktoś wie o co tu chodzi?

mwl4
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 404
2

1 jak i 2 są uważane przez kompilator jako liczby całkowite (int). Jedna z liczb musi być rzeczywista aby nie zostało zastosowane dzielenie całkowite.

Kopiuj
i = 1.0/2;
MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
2

Wszystko jest dobrze, kompilator używa liczb całkowitych. Bo tak zapisałeś je. Dzielenie całkowite 1 przez 2 daje 0. Zatem jest ok. Napisz tak:

Kopiuj
i = 1.0/2.0;

I powinno być ok.

Ehh 25 sekund spóźnienia :]

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0

i jeszcze: printf("%lf",i);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.