Maybe I'm missing something, but in the format field for printf() etc., I don't see a distinction between float variables and double variables. So how does the function know the size of the argument actually submitted? Does the compiler automatically promote float values to double where this function is concerned? Or is the programmer expected always to give it a double?