I have the following block of code. The final line is meant to yield the values for X,Y and P values that are input by the user. However it only returns
(0,0,0)
instead of the values given by user. What am I missing?
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);
Assuming X, Y and P are of type double or float (input part, scanf()), you need to use %f or %lf format specifier (as required) to print (or scan) the values.
- For printing
floatordouble, you need to use%f - For scanning
float, use%f, for scanning double, use%lf.
Using wrong type of argument for a particular format specifier isundefined behaviour. %d expects an int argument. So, in your case, using %d for float or double type of argument is UB.
来源:https://stackoverflow.com/questions/31918889/printf-not-yielding-input-values