printf不产生输入值

我有以下代码块。 最后一行用于产生用户输入的XYP值的值。 但它只会返回

(0,0,0)

而不是用户给出的值。 我错过了什么?

 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); 

假设XYPdoublefloat类型( 输入部分scanf() ),则需要使用%f%lf格式说明符(根据需要)打印(或扫描)值。

  • 要打印floatdouble ,您需要使用%f
  • 对于扫描float ,使用%f ,扫描double,使用%lf

对特定格式说明符使用错误类型的参数是未定义的行为 。 %d需要一个int参数。 因此,在您的情况下,使用%d表示floatdouble类型的参数是UB。