HitmanBBa's blog

By HitmanBBa, history, 9 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?
»
9 years ago, # |
  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.

»
9 years ago, # |
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.

  • »
    »
    9 years ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    I see many codes uses "%lf" specifier for printing, not "%f" but why printf("%lf", x); don't work??