@JohnDoe116

Что значит #QNAN0 в коде C?

Сделал простенькую программку на C. Как написано в учебнике использовал спецификацию преобразования %f (десятичное число с плавающей точкой) при выводе результатов там где это нужно. На выходе получил #QNAN0 там где указал эту спецификацию. Что это означает?И где у меня ошибка в коде?

#include <stdio.h>

/*Функция расчёта параметров окружности*/

main()
{
    int r, d, l, s, pi;    /*Объявляем пременные*/

    pi = 3.14159;
    printf("Enter radius of your circle:\n");
    scanf("%d", &r);
    printf("%d is the diameter of your circle\n", d = 2 * r);
    printf("%f is the perimeter of your circle\n", l = 2 * pi * r);
    printf("%f is the square of your circle\n", s = pi * (r * r));

    return 0;
}


Командная строка

Enter radius of your circle:
10
20 is the diameter of your circle
-1.#QNAN0 is the perimeter of your circle
-1.#QNAN0 is the square of your circle

Process returned 0 (0x0)   execution time : 2.289 s
Press any key to continue.
  • Вопрос задан
  • 1721 просмотр
Пригласить эксперта
Ответы на вопрос 1
myjcom
@myjcom
Потому что printf ожидает %f ---> double
f F форматирует число с плавающей запятой в виде [-]d.d, где d - произвольные десятичные числа


а вы ему подсовываете int знаковое целое

А еще число пи у вас равно трём.

upd:

double d, l, s, pi;    /*Объявляем пременные*/
    int r = 0;
    pi = 3.14159;
    printf("Enter radius of your circle:\n");
    scanf("%d", &r);
    printf("%.2f is the diameter of your circle\n", d = 2 * r); // %.[кол-во знаков]f
    printf("%.2f fis the perimeter of your circle\n", l = 2 * pi * r);
    printf("%.2f is the square of your circle\n", s = pi * (r * r));

Enter radius of your circle: 10
20.00 is the diameter of your circle
62.83 fis the perimeter of your circle
314.16 is the square of your circle

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы