Проблемы с C при использовании float и printf

Я пытаюсь запустить некоторый базовый код на C, чтобы объявить 2 переменные с плавающей запятой, а затем разделить их и поместить это значение в 3-ю переменную. После этого я печатаю все 3.

#include <stdio.h>
int main ()
{
  /* variable definition: */
  float a, b, c; 
  /* variable initialization */
  a = 1.2;
  b = 2.7;  
  c = a / b;
  printf("Floats (a,b) and quotient (c) are : %d,%d,%d \n", a,b,c);  
   return 0;
}

Я использую онлайн-компилятор «www.ideone.com» для компиляции и запуска кода, и вот результат, который я получаю:

Success time: 0 memory: 2156 signal:0

Поплавки (a,b) и частное (c): 1073741824,1072902963,-1610612736

Может ли кто-нибудь увидеть, возможно, я сделал ошибку в коде? Это для класса, и все работало нормально для каждого шага направления, пока я не перешел с int на float.


person Rick Hammer    schedule 27.03.2016    source источник
comment
%d ожидает целочисленные аргументы, см. документацию по printf.   -  person fvu    schedule 27.03.2016
comment
cplusplus.com/reference/cstdio/printf %d для целых чисел, %f для поплавков.   -  person OldProgrammer    schedule 27.03.2016


Ответы (2)


Вы хотите печатать поплавки, поэтому измените это:

printf("Floats (a,b) and quotient (c) are : %d,%d,%d \n", a,b,c);

к этому:

printf("Floats (a,b) and quotient (c) are : %f,%f,%f \n", a,b,c);

Для получения дополнительной информации см. ссылку.

person gsamaras    schedule 27.03.2016
comment
Спасибо, это сработало отлично, я понятия не имел, что мне нужно это сделать или что это относится к определенному типу данных! - person Rick Hammer; 27.03.2016
comment
Теперь вы знаете @RickHammer! ;) - person gsamaras; 27.03.2016

%d не является правильным преобразованием для числа с плавающей запятой, вместо этого используйте %f

изменять:

printf("Floats (a,b) and quotient (c) are : %d,%d,%d \n", a,b,c);

to:

printf("Floats (a,b) and quotient (c) are : %f,%f,%f \n", a,b,c);

и вы должны быть в порядке.

person Charlestone    schedule 27.03.2016