printf nie wyświetla double

printf nie wyświetla double
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:około 12 lat
  • Ostatnio:12 dni
  • Lokalizacja:Wrocław
  • Postów:399
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;

Asm/C/C++
MY
  • Rejestracja:ponad 9 lat
  • Ostatnio:7 dni
  • Postów:1083
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 :]

edytowany 1x, ostatnio: Mr.YaHooo
mwl4
pfff.. co tak wolno.
MY
@mwl4 cóż, moja wina. Następnym razem się postaram.
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:4 minuty
0

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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
MarekR22
a racja pochrzaniło mi się ze scanf które wymaga %lf dla double.

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.