A função scanf não aceita double![RESOLVIDO]

Iniciado por ana182, 27 de Maio de 2008, 02:37

tópico anterior - próximo tópico

ana182

Olá!
Como ponho a função scanf a aceitar doubles? Simplesmente não lê quer eu use %e, %f ou %g. Se testo o valor da variável que deveria receber o valor da scanf, esta retorna-me um valor absurdo. Julgo não haver problemas de sintaxe do código porque se substituir o double por float na inicialização da variável que recebe a scanf, tudo corre bem. O que fazer?

Ana Luísa

P.S. Trata-se de código C.

joas


ana182

Tão simples quanto isto:

#include <stdio.h>

main()
{
  double y;
  printf("nº:");
  scanf("%f",&y);
  printf("%f\n",y);
}

Compilo e não dá erro. Quando introduzo, por exemplo, o nº 2 ele retorna-me 0. :S

Ana Luísa

IgorM0L

#3
  Seu erro eh extremamenet simples.
 
  Caso estivesse usando o tipo float, era somente voce fazer do modo que voce esta fazendo, usando %f.
  Acontece que o tipo double eh um tipo superior ao float, tendo para ele um tipo especial na chamada scanf ou mesmo printf. Use para ele o simbolo %lf;

 Eis o codigo correto:
#include <stdio.h>

main()
{
  double y;
  printf("nº:");
  scanf("%lf",&y);
  printf("%lf\n",y);
}


Execuçao:
igormol@desktop:~/Desktop$ gcc -o test test.c
igormol@desktop:~/Desktop$ ./test
nº:4
4.000000


  PS: Ana Luísa, participe mais do forum, para dar um tom mais feminino, aqui so tem homem!!!

ana182

Olá!
Pois claro! Agora tudo funciona bem. Tenho um livro de programação um pouco antigo e eles não fazem muita referência aos doubles, por razões óbvias... e também sou novata em programação.
Obrigada!

Ana Luísa

P.S. Ok!, vou estar mais atenta ao forum. ;)