LDBL_MIN возвращает 0, LDBL_MAX возвращает #QNAN в C - PullRequest
0 голосов
/ 27 сентября 2018

Я пишу простую программу на C, которая печатает значение, количество байтов, выделенных в памяти, максимальное значение и минимальное значение для каждого типа данных.На самом деле у меня проблемы только с длинной двойной частью.Проще говоря, он не выводит значение, которое я присваиваю моей длинной двойной переменной, функция sizeof работает правильно, только если она используется отдельно в функции printf, значение LDBL_MIN равно 0, но я не понимаю, чтовид спецификатора типа, который мне нужно использовать, и значение LDBL_MAX выводит 1. # QNAN.

Вот мой код:

charactersPrinted=printf("\t\t\t--- Long double ---\nValore: %1.6f",x);
printf("\nBytes allocated: %d\n",sizeof(long double));
printf("Minimum value: %g\nMaximum value: %lg\n",LDBL_MIN,LDBL_MAX);
printf("(Characters printed= %d)\n\n\n",charactersPrinted);

1 Ответ

0 голосов
/ 27 сентября 2018

sizeof - это оператор, а не функция.

%1.6f не имеет особого смысла: минимальная ширина поля 1 избыточна, потому что %f всегда будет производить по крайней мере один символвыход.Точность 6 избыточна, потому что это то, что по умолчанию равно %f.Все это можно записать как %f.

%f занимает double, а не long double (должно быть %Lf).

%d занимаетint, а не size_t (должно быть %zu).

%g занимает double, а не long double (должно быть %Lg).

%lg занимает double, а не long double (должно быть %Lg).

См., Например, документацию Linux для printf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...