Wpis z mikrobloga

#programista15k #prpgramowanie nie #cplusplus bo C, Mireczki pytanie, dlaczego dostaję różne wyniki w następującym przypadku:

int podajMin;
double minY;
double rok;

int main()
{

printf("Podaj minuty: \n");
scanf("%d", &podajMin);
//minY = 24*60*365;
**rozwiazanie 1: rok = podajMin/(24 * 60 * 365);
rozwiazanie 2: rok = podajMin/minY;**
printf("To %f lat", rok);
return 0;
}
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Wyrelworelowany: Masz kolejność wykonywania działań. Kompilator bierze 2 liczby i wykonuje na nich działanie. Jeśli zmienne są różnych typów, następuje niejawna konwersja na ten typ który posiada większą precyzję/zakres. Rozważ te 2 przypadki:
3 * 1.0 / 2
3 / 2 * 1.0
W pierwszym przypadku masz mnożenie int i double. Wynikiem jest double i następuje dzielenie double przez int. Wynik też jest doublem.
W drugim przypadku masz najpierw dzielenie
  • Odpowiedz