Tabla de Contenido
1. Palabras Clave
2. Introducción
3. Tipos Numéricos Predefinidos en C#
4. Literales Numéricas
4.1 Deducción de literales de tipo numérico
4.2 Sufijos numéricos
5. Conclusiones
6. Literales & Enlaces
1. Palabras Clave
- C#
- Literal
- Notación decimal
- Notación hexadecimal
- Tipo de dato
2. Introducción
En esta ocasión se ahonda en el estudio de los tipos de datos numéricos predefinidos en el lenguaje de programación C# (en el artículo anterior se reconoció la estructuración taxonómica de estos tipos de datos). En particular, en este artículo se estudia más a fondo los tipos de datos numéricos y otros temas relacionados: literales numéricas, cómo C# deduce el tipo de dato de una literal numérica y los sufijos utilizados para definir explícitamente el tipo de dato de una literal.
3. Tipos Numéricos Predefinidos en C#
El lenguaje de programación C# cuenta con un amplio número categorizado de tipos de datos numéricos predefinidos. En la Tabla 1 (Albahari (02012)) se muestra la lista con la taxonomía correspondiente.
Tabla 1. Tipos numéricos predefinidos en C# (Albahari (2012)). |
Nota
El lenguaje de programción C# y la máquina virtual CLR (Common Language Runtime) consideran a los tipos de datos int y long como de primera clase o que tienen mayor precedencia en el tratamiento. Mientras que los restantes tipos de datos, es decir, byte, sbyte, short, ushort, uint, ulong, son considerados aptos para escenarios de interoperabilidad o eficiencia de espacio en memoria del sistema.
Nota
Los tipos de datos double y float son utilizados para cálculos científicos sobre números reales. El tipo de dato real decimal es comúnmente usado para cálculos financieros debido a que aporta alta precisión para operaciones aritméticas.4. Literales Numéricas
Las literales numéricas son valores que se pueden expresar en notación decimal o hexadecimal, denotado con el prefijo 0x. Ejemplos de estas literales:int x = 127; // Notación decimal
long y = 0x7F; // Notación hexadecimal
En cuanto a literales reales, es posible utilizar la notación decimal y/o exponencial, así:
double d = 1.5; // Notación decimal
double millon = 1E06; // Notación exponencial
Nota
Vale recordar que, una «literal» significa un valor codificado expresamente en el código fuente del programa, es decir una cadena de caracteres, un carácter, un número entero, un número de coma flotante (float o double).4.1 Deducción de tipos de literales numéricas
De acuerdo con Albahari (2012), por defecto el compilador deduce si una literal es double o de un tipo entero de acuerdo a las siguientes condiciones:- Si la literal contiene un punto decimal o el símbolo exponencial (E), entonces la literal es double.
- En caso contrario, el tipo de la literal puede corresponder con la primera coincidencia de la siguiente lista:
- int
- uint
- long
- ulong
Console.WriteLine(1.0.GetType()); // Double (double)
Console.WriteLine(1E06.GetType()); // Double (double)
Console.WriteLine(1.GetType()); // Int32 (int)
Console.WriteLine(0xF0000000.GetType()); // UInt32 (uint)
4.2 Sufijos Numéricos
Las sufijos numéricos definen de forma explícita el tipo de dato de una literal. Estos sufijos se pueden escribir en letra minúscula o mayúscula. En la Tabla 2 se puede ver los literales soportados por C#.Tabla 2. Sufijos numéricos en C# Albahari [2012]. |
long i = 5; // Conversión implícita sin pérdidda desde literal int a long
Otro caso especial ocurre con el sufijo D, en el cual todas las literales con punto decimal son consideradas double. Ejemplo:
double x = 7.0; // Implícitamente considerada de tipo de dato double
Los sufijos F y M son los útiles y deberían siempre especificarse cuando se manipule literales double o decimal. Debe recordarse que si no se especifica el sufijo F a una literal float se generará un error:
float f = 4.5; // Sin en el prefijo F la compilación falla.
Este error también ocurre para las literales decimal:
decimal d = -1.23; // Sin en el prefijo M la compilación falla.
5. Conclusiones
Se estudió las literales numéricas y su manipulación. También se aprendió y se entendió acerca de las literales numéricas y cómo el compilador determina el tipo de dato a partir de los sufijos especificados. Se enumeraron las condiciones básicas que el compilador utiliza para determinar el tipo de dato de una literal numérica. Al finalizar, se estudiaron los sufijos numéricos para señalar explícitamente el tipo de una literal.
6. Literatura & Enlaces
[1]: C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.
[2]: Why int and long types are first-class and favored by C# and the runtime? - http://stackoverflow.com/questions/17537533/why-int-and-long-types-are-first-class-and-favored-by-c-sharp-and-the-runtime
V
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.