Witam!
Jestem początkującym programistą, więc żeby zrozumieć lepiej kiedy i w jaki sposób zachodzi konwersja, zacząłem mieszać typy danych i obserwować wyniki. Przypisanie wyrażenia do zmiennej dawało przewidywalne rezultaty, natomiast gdy wyrażenie umieściłem bezpośrednio w funkcji printf - wynik mnie zdziwił. Przykład:
printf("\n %d",5.0); wyświetla 0 - dlaczego nie 5?
printf("\n %d",5.1); wyswietla 1717986918 (???) - spodziewałem się raczej obcięcia do 5
printf("\n %d",5.1f); wyswietla 1610612736
printf("\n %d",5*5.1); wyswietla 0 - czemu nie 25?
printf("\n %d",5/2); wyswietla 2 - rozumiem
printf("\n %d",5/2.0); wyswietla 0 - myslalem ze 5 konwertuje sie na float, a potem caly wynik z float na int i wyjdzie 2
printf("\n %d",(float)2/5); wyswietla -1610612736
Skąd te konkretne wyniki?
Wiem, że niektóre z moich wymysłów są bezsensowne i bezcelowe, ale już kilka razy przy obliczeniach pojawiały się dziwne wyniki np. duże liczby ujemne, więc możliwe, że przyczyną były tego typu konwersje... Bardzo zależy mi na Waszej pomocy.