Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Возвращает мантиссу и степень числа с плавающей запятой.
Синтаксис
double frexp(
double x,
int *expptr
);
float frexpf(
float x,
int * expptr
);
long double frexpl(
long double x,
int * expptr
);
#define frexpl(X, INT_PTR) // Requires C11 or later
float frexp(
float x,
int * expptr
); // C++ only
long double frexp(
long double x,
int * expptr
); // C++ only
Параметры
x
Значение с плавающей запятой.
expptr
Указатель на сохраненное значение целой части числа.
Возвращаемое значение
frexp возвращает мантиссу. Если x равно 0, функция возвращает значение 0 для мантиссы и степени. В противном expptr случае NULLобработчик недопустимых параметров вызывается, как описано в разделе "Проверка параметров". Если продолжение выполнения разрешено, эта функции задает для errno значение EINVAL и возвращает 0.
Замечания
Функция frexp разбивает значение с плавающей запятой (x) на мантисса () и экспонентn (m), так что абсолютное значение m больше или равно 0,5 и меньше 1,0 иm x = * 2.n Целый показатель степени n сохраняется в расположении, на которое указывает expptr.
Так как C++ допускает перегрузку, можно вызывать перегрузки функции frexp. В программе C, если вы не используете <макрос tgmath.h> для вызова этой функции, frexp всегда принимает double и int указатель и возвращает значение double.
Если вы используете <макрос tgmath.h>frexp() , тип аргумента определяет, какая версия функции выбрана. Дополнительные сведения см . в разделе "Математика с универсальным типом".
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
| Function | Обязательный заголовок |
|---|---|
frexp, , frexpffrexpl |
<math.h> |
frexpМакрос |
<tgmath.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_frexp.c
// This program calculates frexp( 16.4, &n )
// then displays y and n.
#include <math.h>
#include <stdio.h>
int main( void )
{
double x, y;
int n;
x = 16.4;
y = frexp( x, &n );
printf( "frexp( %f, &n ) = %f, n = %d\n", x, y, n );
}
frexp( 16.400000, &n ) = 0.512500, n = 5
См. также
Поддержка математических и плавающих точек
ldexp
modf, , modffmodfl