es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error bcc32c: el literal integer es demasiado grande para ser representado en cualquier tipo de entero

Tengo un literal de __int64 grande:

const __int64 PwTab[] = {
                        50036500600837093008i64,
                        3006206760097890820056i64
                        };

Esto es aceptado correctamente por bcc32 (compilador clásico de Borland) pero no por bcc32c (clang).

El error para el compilador clang es:

el literal entero es demasiado grande para ser representado en cualquier tipo entero

Utilizo el sufijo i64 para indicarle a la computadora que es un literal entero de 64 bits.

¿Cómo puedo escribir un literal __int64 en clang, que también sea compatible con el tipo __int64 en el compilador clásico?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una solución es utilizar el sufijo LL en lugar de i64 para el literal __int64. Este es un sufijo estándar que es reconocido tanto por bcc32 como por clang.

    Aquí tienes un ejemplo de cómo usar el sufijo LL:

    const __int64 PwTab[] = {
        50036500600837093008LL,
        3006206760097890820056LL
    };
    

    Con esta modificación, el código debería compilar sin errores en ambos compiladores.

Comments are closed.