printf没有产生输入值

时间:2015-08-10 11:54:46

标签: c printf scanf format-specifiers

我有以下代码块。最后一行用于生成用户输入的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);

1 个答案:

答案 0 :(得分:4)

假设XYP属于doublefloat类型(输入部分,{{1} }),您需要使用scanf()%f格式说明符(根据需要)打印(或扫描)值。

  • 要打印%lffloat,您需要使用double
  • 要扫描%f,请使用float,要进行双倍扫描,请使用%f

对特定格式说明符使用错误类型的参数是undefined behaviour%lf需要%d个参数。因此,在您的情况下,对int%d类型的参数使用float是UB。