HitmanBBa's blog

By HitmanBBa, history, 11 years ago, In English

Hi everyone.

I hope you're having a good day.

As you see in the picture when I read double using scanf "%lf" specifier it's ok, but when I'm trying to print double using printf "%lf" specifier, I got zero as result, but when I use "%f" floating-point specifier give me the right result, can any one help me with this problem and tell me why?

My IDE: Code::Blocks 13.12

My compiler: GNU GCC Compiler.

Thanks in advance :D

  • Vote: I like it
  • +7
  • Vote: I do not like it

| Write comment?
»
11 years ago, hide # |
 
Vote: I like it +6 Vote: I do not like it

Can I know why downvotes !!!

If you don't know the answer just ignore it.

»
11 years ago, hide # |
← Rev. 4  
Vote: I like it 0 Vote: I do not like it

Read this page link

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.