2015-09-21 1 views
3

Lorsque j'exécute le programme Ansi C ci-dessous, une valeur de "0.000000" est imprimée. Est-ce que quelqu'un sait pourquoi la valeur "561.308000" n'est pas imprimée? J'utilise Dev-C++ pour exécuter le programme, et le compilateur que j'utilise est: le port Mingw de GCC (GNU Compiler Collection), la version MSVCRT 2.95.2-1.Ansi C: Impression double variable longue jusqu'à une valeur de 0,000000

#include <stdio.h> 
#include <stdlib.h> 

main() 
{ 
    long double x = 561.308; 
    printf("%Lf",x); 
} 
+1

Il fonctionne bien sur [Wandbox] (http://melpon.org/wandbox/permlink/QDKLzZcAw0x57l4B). Quel est votre compilateur? – MikeCAT

+0

cela fonctionne bien dans [ideone] (http://ideone.com/WiZu2D). –

+0

J'utilise Dev-C++ 5.11. – Spacedog789

Répondre

1

avec gcc (GCC) 4.8.1 sur Compiler Windows 7 64bit avec cette commande est travaillée. (Ajouter -std=c99 à la possibilité d'avoir le travail du compilateur C99)

gcc -Wall -Wextra -std=c99 test.c -o test.exe

+0

Pourquoi C99 ferait-il une différence? Pour autant que je sache, «long double» était déjà autorisé en C90. – Lundin

+0

Et en effet, cela ne fonctionne pas sur Mingw 64 gcc 4.9.1. Imprime zéro. – Lundin

0

le zéro pourrait être la valeur de retour de la main() il est imprimé Pourriez-vous essayer:

printf("Answer is : %Lf",x); 

pour voir si vous avez ou 0,000000 réponse est: 0,0000

et que diriez-vous

printf("Answer is : %Lf", 561.38888); 

J'ai ceci:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    long double x = 561.308; 
    printf("%Lf",x); 
    return 0; 
} 
+0

La valeur qui a été imprimée lorsque j'ai essayé votre première suggestion était: La réponse est: 0.000000 – Spacedog789

+0

La valeur qui a été imprimée lorsque j'ai essayé votre deuxième suggestion était: La réponse est: 561.388880 – Spacedog789

+0

@ Spacedog789 pouvez-vous essayer le code que j'ai téléchargé? – AlbertFG