2015-09-12 2 views
0

Dans un code désassemblé (probablement compilé par le studio visuel), j'ai trouvé un tel code:nombre extrêmement énorme dans le code assembleur mais non valide dans C++

label: 
dt 1.189713341495303E+4932 

Qu'est-ce que cela signifie? Pourquoi quelqu'un devrait-il utiliser un tel numéro?

boost::lexical_cast<double>("1.189713341495303E+4932") échoue la conversion de ce nombre. Si c'est hors de portée, pourquoi est-ce autorisé dans l'assemblage?

+1

Avez-vous essayé un '' long double? –

Répondre

3

Cette valeur est proche de LDBL_MAX dans float.h sur la plupart des systèmes - c'est la valeur maximale d'un long double:

$ grep LDBL_MAX float.h 
#define LDBL_MAX __LDBL_MAX__ 

$ gcc -dM -E - < /dev/null | grep __LDBL_MAX__ 
#define __LDBL_MAX__ 1.18973149535723176502e+4932L