|
Vždy, keď si nie som istý, nájdem si riešenie cez google: http://stackoverflow.com/questions/210590/why-does-scanf-need-lf-for-doubles-when-printf-is-okay-with-just-f
Because C will promote floats to doubles for functions that take variable arguments. Pointers aren't promoted to anything, so you should be using %lf, %lg, %le or %la (C99) to read in doubles. Google preklad: Vzhľadom k tomu, C bude podporovať pláva zdvojnásobuje funkcií, ktoré sa variabilné argumenty. Ukazovatele nie sú podporované k ničomu, takže by ste mali používať %lf, %lg ,%le alebo %la (C99), čítať vo štvorhre.
Použitie: #include <stdio.h>
int main(int argc, char** argv) {
double cislo;
printf("Zadajte cislo:"); scanf("%lf", &cislo); printf("Cela cast cisla: %lf je: %d\n",cislo, (int)cislo); printf("Zadajte cislo:"); scanf("%lg", &cislo); printf("Cela cast cisla: %lg je: %d\n",cislo, (int)cislo); printf("Zadajte cislo:"); scanf("%le", &cislo); printf("Cela cast cisla: %le je: %d\n",cislo, (int)cislo); printf("Zadajte cislo:"); scanf("%la", &cislo); printf("Cela cast cisla: %la je: %d\n",cislo, (int)cislo);
return 0; } |
|