Poniższy kod działa:Dane zamieszanie w C
int main(void)
{
float f = get_float();
int i = round(f*100);
printf("%i\n", i);
}
Jednak jeśli kodowanie błędów generowane w ten sposób:
printf("%i\n", round(1.21*100));
Wyjście mówi round(1.21*100)
jest float
. Dlaczego więc nie jest w porządku?
Kiedy 'wartość float' jest przypisany do' wartości int', wewnętrzna przemiana zachodzi. 'round()' daje podwójną wartość, więc jeśli nie zostanie wykonana żadna konwersja, jej wartość pozostaje podwójna. W tym określonym przypadku 'printf ("% i \ n ", runda (1,21 * 100)),' nie jest wykonywana żadna konwersja, więc wymaga specyfikacji '% f', aby wydrukować wartość float. – Sma