Home Segments Index Top Previous Next

82: Mainline

Note that you use the %i read specification in scanf calls to read integers, just as you use %i in printf calls to display integers.

By extension, you would think that you would use the %f read specification in scanf to read double type floating-point numbers, inasmuch as you use the %f print specification in printf calls to display such numbers.

Alas, no. The %f read specification works only with those floating-point numbers of type float, and you get weird results if you accidentally use %f with a floating-point number of type double. For numbers of type double, you need the %lf read specification:

double price; 
... 
         *------* 
         |      | 
         |      v 
         |    ------ 
scanf ("%lf", &price); 
... 

See the hardcopy version of this book for a larger discussion of read specifications.