Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kayan noktalı bir sayının mantisini ve üssünü alır.
Sözdizimi
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
Parametreler
x
Kayan nokta değeri.
expptr
Depolanan tamsayı üssü işaretçisi.
Dönüş değeri
frexp mantis döndürür. 0 ise x , işlev hem mantis hem de üs için 0 döndürür. ise expptr NULL, geçersiz parametre işleyicisi Parametre doğrulama bölümünde açıklandığı gibi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlev olarak EINVAL ayarlanır errno ve 0 döndürür.
Açıklamalar
İşlev kayan frexp nokta değerini (x) bir mantis (m) ve üssüne ()n böler; böylece mutlak değeri m 0,5'ten büyük veya buna eşit ve 1,0'dan küçük vem x = * 2n olur. Tamsayı üssü n tarafından expptrişaret edilen konumda depolanır.
C++ aşırı yüklemeye izin verir, böylece aşırı yüklemelerini frexpçağırabilirsiniz. C programında, bu işlevi çağırmak için tgmath.h makrosunu <kullanmadığınız sürece, frexp her zaman bir double ve işaretçisi int alır ve döndürürdouble.>
tgmath.h>frexp() makroyu <kullanırsanız, işlevin hangi sürümünün seçili olduğunu bağımsız değişkenin türü belirler. Ayrıntılar için bkz . Tür genel matematik .
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
| İşlev | Gerekli başlık |
|---|---|
frexp, frexpf, frexpl |
<math.h> |
frexp Makro |
<tgmath.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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