Здравствуйте. Си стал изучать совсем недавно и здесь как оказалось очень много непонятной мне "магии".
#include <stdio.h>
int main()
{
int a = 13;
float b = 4.7;
printf("%d", b/a); //на выходе получаем 660764199
printf("%d", b*a); //а здесь - -1207959552
return 0;
}
При попытке поделить/умножить int на float (или float на int), а затем в printf вывести через символ преобразования
для целых чисел, то есть %d, программа выдает какие-то непонятные космические цифры.
Я понял, что нужно использовать %f и все будет хорошо.
Но я хочу понять, откуда эти цифры берутся? Так как по моей логике, ответ должен был просто отбросить дробную часть
и вывести округленный вариант. Так как скажем, почему если int a = 12 поделить на float b = 6, и вывести через %d получается 0, но через %f выходит 2.0? Или почему 13/4.7 получается выше упомянутое число, а не просто 2?