Programación En C: Literales

Este artículo es parte de una serie – Cómo programar cualquier cosa: C Programación

Prefacio

Hice referencia a la diferencia entre las expresiones y las declaraciones en mi artículo Programming Crash Course, indicando que las expresiones se “ejecutaron inmediatamente” y que las declaraciones eran estructuras de control de programa. En C, esto es cierto, y las expresiones abarcan una gran cantidad de construcciones en un programa. Las expresiones en C se pueden dividir en dos o tres categorías. Algunas personas incluyen declaraciones variables y funcionamientos como expresiones, pero en realidad voy a cubrir la declaración de variables en otro artículo donde puedo profundizar en sus detalles relacionados con cosas como el alcance. Este artículo se centrará en las expresiones literales y los operadores del lenguaje C, incluidos los operadores de asignación, relacionales y de bits. Entonces, vayamos a ello ¿o sí?

Literales

Literales son cuando escribes un valor directamente en tu código. Por ejemplo, 10 es un literal, así como “esto es una cadena”. Esto es más evidente en asignaciones variables:

En el código anterior 10 y 10.54 son literales, sus valores son exactamente lo que parecen. Algunas personas llaman a este tipo de constantes literales, pero yo uso el término literal porque literalmente son lo que parecen. Ahora, hay algunas advertencias a los literales y los cubriré aquí. La primera de estas advertencias es que los literales se “traducen” en el tipo de datos de aceptación más pequeño. Esto significa que se supone que los números no fraccionarios son enteros, los caracteres individuales se convierten en caracteres, los números fraccionarios en realidad oscilan en esta tendencia y se duplican. Hay formas de controlar esto, como se ve a continuación.

char Literales

Un personaje es parte de una cadena, presumiblemente. Eso es lo que se supone cuando se especifica un carácter literal, siendo, por supuesto, una ‘letra’. Usted lo especifica entre comillas simples así:

Bastante simple, pero, por desgracia, hay codificaciones de caracteres que requieren caracteres multibyte. Estos son caracteres que constan de uno o más bytes, y generalmente aparecen cuando está programando en otro idioma con otro conjunto de caracteres como el japonés. También hay “caracteres anchos” que generalmente tienen 16 bits de longitud. Sin embargo, no complica las cosas demasiado, pero cambia la forma en que se define el literal. Para caracteres multibyte simplemente encierra los caracteres dentro de comillas simples. Para especificar un literal de caracteres anchos, debe poner una L delante del literal. Esto hará que el carácter literal se considere “ancho” (generalmente 16 bits). Sin embargo, con caracteres anchos, debe usar un tipo de datos que no está integrado en C, sino que reside en la biblioteca estándar, llamada wchar_t. Esto requiere la inclusión del archivo <stddef.h>, un detalle fuera del alcance de este artículo. A continuación puede ver ejemplos de caracteres multibyte y anchos:

Descubrirá en todos los literales que son modificables de varias maneras adjuntando letras para obligar al compilador a interpretarlas de cierta manera.

NOTA: El programador no puede escribir fácilmente todos los caracteres que pueden almacenarse en un literal de caracteres. Esto incluye los caracteres ASCII como el retroceso, la campana de alerta, el carácter de retorno, y así sucesivamente. En estos casos, el programador debe usar lo que se conoce como secuencias de escape. Una secuencia de escape es simplemente una barra invertida seguida de un calificador que representa a otro personaje. Por ejemplo, la secuencia de escape \ n representa una nueva línea, \ t para una pestaña, y así sucesivamente. Para obtener una lista completa de secuencias de escape, puede encontrar un artículo complementario en wikipedia.

int Literales

Los literales enteros se parecen a los números normales y, de hecho, se escriben como números normales sin ningún tipo de pieza decimal. 5 y -34 son ambos literales enteros. Como se señaló anteriormente, el compilador intenta ajustar las constantes numéricas en el tipo de datos compatible más pequeño que lo contendrá, pero no piense que los números por debajo de 255 entrarán en un carácter. Una vez que el compilador decide que es un int literal permanece como int, sin embargo, si el literal es lo suficientemente grande como para no encajar en un int estándar, puede convertirse en int largo. Para obtener más información sobre la diferencia entre un int estándar y un int largo, consulte el artículo sobre los tipos de datos básicos. Por ejemplo, el literal 73 encajará en un int, y el número 234,123 encajará en un int largo.

Ahora, puede forzar que un literal entero se interprete como un int largo incluso si es más pequeño que uno agregando el carácter ‘L’ al final del mismo. Puede ser una L minúscula o mayúscula, pero prefiero usar mayúsculas, ya que lo hace más evidente. Del mismo modo, los literales negativos se anteponen con un signo negativo, lo que hace que el literal estándar se asigne a un entero con signo. También puede forzar al compilador a interpretarlo como un entero sin signo agregando el carácter ‘U’ al final del mismo. De nuevo, en mayúsculas o en minúsculas, prefiero mayúsculas.

NOTA: Hay formas de escribir enteros en una base diferente de la base decimal 10. También puede escribir literales en forma hexadecimal y octal. Para más información sobre binario, hexadecimal y octal vea mi serie Wonderful World of Binary en otro lado. Para escribir un valor hexadecimal como un literal, anteponga el valor con 0x. Entonces, un byte lleno de sabio binario de 1 se escribiría como 0xFF. Para escribir un octal simplemente coloque un 0 delante del valor, en este sentido para escribir 9 en octal, escribiría 011.

double Literales

Los literales dobles son números que tienen un componente decimal para ellos, como 234.567. C también le permite usar notación científica para detallar un número decimal también. De forma predeterminada, este literal bucks la tendencia del contenedor más pequeño y de forma predeterminada interpreta el literal como un tipo de datos doble. Hay formas de evitar esto, por supuesto. Si desea que su número decimal se interprete como un flotante en lugar de un doble más grande, puede agregar el carácter ‘F’ al final del mismo. Esta ‘F’ puede ser en mayúscula o minúscula, pero prefiero la mayúscula ya que se destaca más. También hay una manera de interpretar el literal como un doble largo y es agregar el carácter ‘L’ al final del literal. ¿Cómo sabe el compilador que esta ‘L’ significa doble larga y no larga int? Esto se debe a que el literal tiene un componente decimal, si no hubiera una parte decimal sería un número entero en su lugar.

NOTA: en C99 también puede especificar un modificador largo largo al agregar ‘LL’ al final de un literal. Esto provoca que el entero se interprete como un double / int largo largo. C99 es el estándar que ofrece el modificador de larga duración, por lo que esto solo se aplica a los programas que compilan contra C99.

Constantes De Cadena

C le permite especificar una cadena de caracteres juntos como un literal, pero su uso es limitado. Como C no tiene un tipo de datos de cadena, los literales de cadena solo pueden aparecer en ciertos lugares que esperan una matriz de caracteres, o un puntero de caracteres. Las cadenas se especifican con comillas dobles, y esto es importante. “a” y “a” no son lo mismo para el compilador de C, uno es un literal de cadena y el otro es un literal de char.

Las secuencias de escape se aplican a las cadenas tal como se aplican a los caracteres literales. Por ejemplo, si quisiéramos incluir una nueva línea y una pestaña en una cadena, podríamos escribir esto:

Conclusión

Los literales son muy importantes en la programación, ya que son una forma de obtener datos en un programa. La asignación de literales a variables nos permite especificar varias cosas, como la cantidad de veces que vamos a realizar una operación. El uso de literales en varias partes del programa nos permite especificar qué tan grande será una matriz. Usando literales de cadena podríamos codificar (es cuando ponemos los datos que el programa usa directamente en el código del programa) una serie de mensajes de error que saldrían cuando ocurren ciertos errores. Sin los literales no podríamos especificar los detalles finos de un programa, o definir las constantes que afectan el funcionamiento de un programa.

Este artículo es parte de una serie – Cómo programar cualquier cosa: Programación C

Si usted aprecia este artículo usted puede ser que considere el apoyar de mi Patreon.

Pero si un compromiso mensual es un poco más, lo entiendo, podría considerar comprarme un café.

photo credit: Glyn Lowe Photoworks. Blue Port – Rickmer Rickmers via photopin (license)

También te podría gustar...

Deja un comentario

A %d blogueros les gusta esto: