You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Error al intentar asignar un número negativo a un ent8. El siguiente código genera un error de compilación:
público ent inicia()
{
ent8 b = -2;
devuelve 0;
}
PS> ñ ./prueba.ñ -s prueba
Error: [./prueba.ñ:3:12]: No puedes guardar un valor de tipo 'ent16' en un destino de tipo 'ent8'.
Línea 3: ent8 b =-2;
En la implementación actual el sistema de tipos del compilador no tolera esta asignación, aunque en este caso el valor literal -2 sí cupiera en un ent8.
En este momento, internamente el sistema de tipos interpreta el -2 como de tipo ent16. El proceso es el siguiente:
Al literal 2 se le asigna el tipo natural más pequeño (en este caso nat8).
Al literal 2 de tipo nat8 se le aplica la operación unaria -, para convertirlo en negativo. El sistema de tipos no permite que un número natural de 8 bits se asigne a un entero de 8 bits, pues uno de los bits del entero se dedica al signo (0: positivo, 1: negativo), quedando solamente 7 bits disponibles en el entero, donde no caben los 8 bits del nat8. Por ello, al literal -2 se le termina asignando el siguiente tipo entero más pequeño: ent16.
Finalmente, el ent16 no cabe en un ent8.
Es preciso ampliar la implementación de los tipos numerales para tener en cuenta estas particularidades.
The text was updated successfully, but these errors were encountered:
Error al intentar asignar un número negativo a un ent8. El siguiente código genera un error de compilación:
En la implementación actual el sistema de tipos del compilador no tolera esta asignación, aunque en este caso el valor literal
-2
sí cupiera en unent8
.En este momento, internamente el sistema de tipos interpreta el
-2
como de tipoent16
. El proceso es el siguiente:2
se le asigna el tipo natural más pequeño (en este casonat8
).2
de tiponat8
se le aplica la operación unaria-
, para convertirlo en negativo. El sistema de tipos no permite que un número natural de 8 bits se asigne a un entero de 8 bits, pues uno de los bits del entero se dedica al signo (0: positivo, 1: negativo), quedando solamente 7 bits disponibles en el entero, donde no caben los 8 bits delnat8
. Por ello, al literal-2
se le termina asignando el siguiente tipo entero más pequeño:ent16
.ent16
no cabe en unent8
.Es preciso ampliar la implementación de los tipos numerales para tener en cuenta estas particularidades.
The text was updated successfully, but these errors were encountered: