Condividi tramite


ldexp, ldexpf, ldexpl

Moltiplica un numero a virgola mobile per una potenza integrale di due.

Sintassi

double ldexp(
   double x,
   int exp
);
float ldexpf(
   float x,
   int exp
);
long double ldexpl(
   long double x,
   int exp
);
#define ldexp(X, INT) // Requires C11 or higher

float ldexp(
   float x,
   int exp
);  // C++ only
long double ldexp(
   long double x,
   int exp
);  // C++ only

Parametri

x
Valore a virgola mobile.

exp
Esponente dell'intero.

Valore restituito

Se ldexp ha esito positivo, le funzioni restituiscono il valore * x 2exp . In caso di overflow e a seconda del segno di x, ldexp restituisce +/- HUGE_VAL; il errno valore è impostato su ERANGE.

Per altre informazioni sui errno possibili valori restituiti dall'errore, vedereerrno , _doserrno_sys_errlist, e _sys_nerr.

Osservazioni:

Poiché C++ consente l'overload, è possibile chiamare overload di ldexp che accettino tipi float e long double. In un programma C, a meno che non si usi la <macro tgmath.h> per chiamare questa funzione, ldexp accetta sempre e double un int e restituisce un oggetto double.

Se si utilizza la <macro tgmath.h>ldexp() , il tipo dell'argomento determina quale versione della funzione è selezionata. Per informazioni dettagliate, vedere La matematica generica dei tipi.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione C Intestazione C++
ldexp, ldexpf, ldexpl <math.h> <cmath>
ldexp macro <tgmath.h>

Per informazioni sulla compatibilità, vedere Compatibilità.

Esempio

// crt_ldexp.c

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 4.0, y;
   int p = 3;

   y = ldexp( x, p );
   printf( "%2.1f times two to the power of %d is %2.1f\n", x, p, y );
}

Output

4.0 times two to the power of 3 is 32.0

Vedi anche

Supporto matematico e a virgola mobile
frexp
modf, modff, modfl