Programación D - Literales

Los valores constantes que se escriben en el programa como parte del código fuente se denominan literals.

Los literales pueden ser de cualquiera de los tipos de datos básicos y se pueden dividir en números enteros, números de coma flotante, caracteres, cadenas y valores booleanos.

Nuevamente, los literales se tratan como variables regulares, excepto que sus valores no se pueden modificar después de su definición.

Literales enteros

Un literal entero puede ser uno de los siguientes tipos:

  • Decimal usa la representación numérica normal con el primer dígito no puede ser 0 ya que ese dígito está reservado para indicar el sistema octal. Esto no incluye 0 por sí solo: 0 es cero.

  • Octal utiliza 0 como prefijo del número.

  • Binary utiliza 0b o 0B como prefijo.

  • Hexadecimal utiliza 0x o 0X como prefijo.

Un literal entero también puede tener un sufijo que sea una combinación de U y L, para unsigned y long, respectivamente. El sufijo puede estar en mayúsculas o minúsculas y puede estar en cualquier orden.

Cuando no usa un sufijo, el compilador elige entre int, uint, long y ulong en función de la magnitud del valor.

Aquí hay algunos ejemplos de literales enteros:

212         // Legal 
215u        // Legal 
0xFeeL      // Legal 
078         // Illegal: 8 is not an octal digit 
032UU       // Illegal: cannot repeat a suffix

A continuación se muestran otros ejemplos de varios tipos de literales enteros:

85         // decimal 
0213       // octal
0x4b       // hexadecimal 
30         // int 
30u        // unsigned int 
30l        // long 
30ul       // unsigned long 
0b001      // binary

Literales de coma flotante

Los literales de coma flotante se pueden especificar en el sistema decimal como en 1.568 o en el sistema hexadecimal como en 0x91.bc.

En el sistema decimal, un exponente se puede representar agregando el carácter e o E y un número después de eso. Por ejemplo, 2,3e4 significa "2,3 por 10 elevado a 4". Se puede especificar un carácter "+" antes del valor del exponente, pero no tiene ningún efecto. Por ejemplo, 2.3e4 y 2.3e + 4 son iguales.

El carácter “-” agregado antes del valor del exponente cambia el significado a "dividido por 10 a la potencia de". Por ejemplo, 2.3e-2 significa "2.3 dividido por 10 elevado a 2".

En el sistema hexadecimal, el valor comienza con 0x o 0X. El exponente se especifica mediante p o P en lugar de e o E. El exponente no significa "10 elevado a", sino "2 elevado a". Por ejemplo, el P4 en 0xabc.defP4 significa "abc.de multiplicado por 2 elevado a 4".

Aquí hay algunos ejemplos de literales de punto flotante:

3.14159       // Legal 
314159E-5L    // Legal 
510E          // Illegal: incomplete exponent 
210f          // Illegal: no decimal or exponent 
.e55          // Illegal: missing integer or fraction 
0xabc.defP4   // Legal Hexa decimal with exponent 
0xabc.defe4   // Legal Hexa decimal without exponent.

De forma predeterminada, el tipo de literal de coma flotante es doble. F y F significan flotante, y el especificador L significa real.

Literales booleanos

Hay dos literales booleanos y forman parte de las palabras clave D estándar:

  • Un valor de true representando verdadero.

  • Un valor de false representando falso.

No debe considerar el valor de verdadero igual a 1 y el valor de falso igual a 0.

Literales de caracteres

Los literales de caracteres se incluyen entre comillas simples.

Un literal de carácter puede ser un carácter simple (por ejemplo, 'x'), una secuencia de escape (por ejemplo, '\ t'), un carácter ASCII (por ejemplo, '\ x21'), un carácter Unicode (por ejemplo, '\ u011e') o como carácter con nombre (por ejemplo, '\ ©', '\ ♥', '\ €').

Hay ciertos caracteres en D cuando están precedidos por una barra invertida tendrán un significado especial y se usan para representar como nueva línea (\ n) o tabulación (\ t). Aquí tiene una lista de algunos de esos códigos de secuencia de escape:

Secuencia de escape Sentido
\\ \ personaje
\ ' ' personaje
\ " " personaje
\? ? personaje
\un Alerta o campana
\segundo Retroceso
\F Alimentación de formulario
\norte Nueva línea
\ r Retorno de carro
\ t Pestaña horizontal
\ v Pestaña vertical

El siguiente ejemplo muestra algunos caracteres de secuencia de escape:

import std.stdio;
  
int main(string[] args) { 
   writefln("Hello\tWorld%c\n",'\x21'); 
   writefln("Have a good day%c",'\x21'); 
   return 0; 
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Hello   World!

Have a good day!

Literales de cadena

Los literales de cadena se incluyen entre comillas dobles. Una cadena contiene caracteres que son similares a los literales de caracteres: caracteres simples, secuencias de escape y caracteres universales.

Puede dividir una línea larga en varias líneas usando cadenas literales y separarlas usando espacios en blanco.

Aquí hay algunos ejemplos de cadenas literales:

import std.stdio;

int main(string[] args) {
   writeln(q"MY_DELIMITER
      Hello World
      Have a good day
      MY_DELIMITER");

   writefln("Have a good day%c",'\x21'); 
   auto str = q{int value = 20; ++value;}; 
   writeln(str); 
}

En el ejemplo anterior, puede encontrar el uso de q "MY_DELIMITER MY_DELIMITER" para representar caracteres de varias líneas. Además, puede ver q {} para representar una declaración del lenguaje D en sí misma.