printf ne donnant pas de valeurs d’entrée

J’ai le bloc de code suivant. La dernière ligne est censée générer les valeurs des valeurs X , Y et P entrées par l’utilisateur. Cependant, il ne fait que revenir

(0,0,0)

au lieu des valeurs données par l’utilisateur. Qu’est-ce que je rate?

 printf("What is the robot's initial X position? (cm)\n"); scanf("%f",&X); printf("What is the robot's initial Y position? (cm)\n"); scanf("%f",&Y); printf("What is the robot's initial angular position? (degrees)\n"); scanf("%f",&P); printf("The initial position is (%d, %d, %d)\n", X,Y,P); 

En supposant que X , Y et P soient de type double ou float ( partie d’entrée , scanf() ), vous devez utiliser le spécificateur de format %f ou %lf (si nécessaire) pour imprimer (ou numériser) les valeurs.

  • Pour imprimer float ou double , vous devez utiliser %f
  • Pour une numérisation float , utilisez %f , pour une numérisation double, utilisez %lf .

L’utilisation d’un type d’argument incorrect pour un spécificateur de format particulier constitue un comportement indéfini . %d attend un argument int . Donc, dans votre cas, utiliser %d pour un argument de type float ou double est UB.