2015-08-10 6 views
-4

У меня есть следующий код. Конечная строка предназначена для получения значений для значений X, Y и P, которые вводятся пользователем. Однако он возвращает толькоprintf не дает входных значений

(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

что такое 'PrintF' ??? –

+0

@SouravGhosh Только что отредактировал мой заголовок, означающий «printf» – Trippy

+1

Вы сканируете X, Y и P как 'double's, но печатаете их как' int ', каков их тип? – Kninnug

ответ

4

Предполагая X, Y и P имеют тип double или float (входной части, scanf()), необходимо использовать %f или %lf спецификатор формата (по мере необходимости) для печати (или сканирования) значения.

  • Для печати float или double, вам нужно использовать %f
  • Для сканирования float используйте %f, для сканирования дважды, используйте %lf.

Использование неправильного типа аргумента для конкретного спецификатора формата - undefined behaviour. %d ожидает аргумент int. Итак, в вашем случае использование %d для float или double Тип аргумента - UB.

+0

Как очень глупо от меня. Спасибо. – Trippy

+0

Нет проблем, вызванных еще не потребляемыми доходами? – usr2564301

+1

@Jongware Не понял. return (ведущие пробелы) в случае '% f' в любом случае игнорируются, верно? –

 Смежные вопросы

  • Нет связанных вопросов^_^