Возвращение 1.0f дает мне 1065353216 - PullRequest
5 голосов
/ 26 июля 2011

У меня есть функция C, которая возвращает тип float.

Когда функция возвращает 1.0f, получатель видит 1065353216, а не 1.0.

Я имею в виду следующее:

float Function()
{
    return 1.0f;
}

float value;
value = Function(); 
fprintf(stderr, "Printing 1.0f: %f", value);

Отображение:

1065353216

Но не:

1.0

Ответы [ 3 ]

15 голосов
/ 26 июля 2011

Вы определяете свою функцию в одном исходном файле и вызываете ее из другого, не предоставляя подпись, из-за чего компилятор считает, что подпись int Function(), что приводит к странным результатам.

Вы должны добавить подпись: float Function(); в файл, где printf.

Например:

float Function();
float value;
value = Function(); 
fprintf(stderr, "Printing 1.0f: %f", value);
4 голосов
/ 26 июля 2011

Дважды проверьте свою работу, так как ваша реализация верна.

Доказательства: http://codepad.org/QlHLEXPl

0 голосов
/ 26 июля 2011

Моя очередь угадать проблему:

Вы либо:

  • редактирование исходного кода без его сохранения
  • редактирование одного файла, но компиляция и запуск другого
  • редактирование и компиляция одного файла, но запуск другого
  • делает что-то еще более сложное, но похожее:)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...