2010-10-11 16 views
2

J'ai écrit le code suivant:C++ scanf/printf de gamme

int main() { 
    double A[2]; 
    printf("Enter coordinates of the point (x,y):\n"); 
    scanf("%d,%d", &A[0], &A[1]); 

    printf("Coordinates of the point: %d, %d", A[0], A[1]); 
    return 0; 
} 

Il agit comme ceci:

Entrez les coordonnées du point (x, y):

3 , 5

Coordonnées du point 3, 2673912

Comment est-il possible que 5 convertit en 2673912 ??

+1

Pourquoi utilisez-vous scanf/printf dans ce qui est censé être un programme C++? –

Répondre

8

Vous lisez des valeurs doubles en utilisant le format entier décimal (% d). Essayez d'utiliser le format double (% lf) à la place ...

scanf("%lf,%lf", &A[0], &A[1]) 
+3

Ne pas oublier 'printf (" Coordonnées du point:% lf,% lf ", A [0], A [1]);' – dgnorton

+0

Merci, c'est tout! Mais il est possible de changer en quelque sorte le type en double pour pouvoir faire fonctionner (+, *, -, /, ...) avec ces nombres? Quel est le type% lf en fait? –

+0

@Radek A [0] et A [1] sont des doubles. Il n'est pas nécessaire de "changer le type en double". +, *, ... serait parfait. % lf, indique à scanf que l'argument est un "long float", c'est-à-dire un double. Notez également le commentaire de dgnorton sur l'utilisation de% lf dans le printf –