Qu'est signifier 1L dans le langage C

Fermé
Gaer - 13 déc. 2009 à 22:11
Gaer1981 Messages postés 1 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 14 décembre 2009 - 14 déc. 2009 à 13:47
Bonjour,
J'ai un petit problème, ça a l'air de rien mais je viens d'y passer des heures en cherchant. Je dois comprendre un code en langage c et je suis bloqué sur un élement. J'ai une fonction

static long mantexp(double val, int *exp, int nbits)
{
long mant, max = 1L << nbits;

if ((mant = (long)floor(max * frexp(val, exp) + 0.5)) == max) {
mant >>= 1;
++ *exp;
}
if (*exp < -128) /* NUMBER IS ZERO, MANTISSA IS UNDEFINED */
*exp = -128;
else if (*exp > 127) { /* NUMBER IS MAXIMUM AVAILABLE */
*exp = 127;
mant = max - 1;
}
return (mant);

Je n'arrive pas à comprendre la ligne suivante:
long mant, max = 1L << nbits;
Ma question est: le 1L signifier quoi? la variable max=1L est initialisé à quelle valeur?
Cette fonction est tiré d'un code qui fait les conversions des chiffres flottants reçu d'un microcontroleur en formant de représentation PC .

Merci beaucoup de votre aide, la compréhension de ce détail va me débloquer.

1 réponse

Salut,

L
signifie que 1 c'est une constante de type Long
L'opérateur d'affectation est moins prioritaire que l'opérateur de décalage <<

donc max contiendra le résultat de l'expression 1L décalée à gauche nbits
0
Re,

L signifie que 1 c'est une constante de type Long
Plutôt 1L signifie que 1 c'est une constante de type Long
0
Gaer1981 Messages postés 1 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 14 décembre 2009 > lami20j
14 déc. 2009 à 13:47
Merci pour votre reponse
Juste une précision une autre. Donc pour dans le PC cette constante est sur 32bits et vaut 1. C'est à dire il a la forme de :
00000000 00000000 00000000 00000001 en binaire. donc si nbits=8 on aura :
00000000 00000000 00000001 00000000
Ai-je bien compris ?

Merci
0