Las constantes son expresiones con un valor fijo.
Las constantes literales se pueden clasificar en:
Tambien tenemos los números decimales y C++ permite el uso de números octales (osea de base 8) y números hexadecimales (base 16) como constantes literales. Para literales octales, los dígitos están precedidos de un carácter 0 (cero). Y para hexadecimal, están precedidos por los caracteres 0x (cero, x). Por ejemplo, las siguientes contantes literales son todas equivalentes entre sí:
Estas constantes literales tienen un tipo, al igual que las variables.
Por defecto, literales enteros son de tipo int. Sin embargo, ciertos sufijos pueden añadirse a un literal entero, para especificar un tipo de entero diferente:
Unsigned se puede combinar con cualquiera de los otros dos en cualquier orden para formar unsigned long ó unsigned long long.
Por ejemplo:
Por ejemplo:
Observe que para representar un sólo carácter lo hemos incluído entre comillas simples ('z' ó 'p') y para expresar una string (que generalmente consta de más de un carácter), la incluimos con caracteres entre comillas dobles ( "Hello World" ó "How do you do?" ).
Los literales de un sólo carácter y de string requieren comillas que los rodeen para distinguirlos de posibles identificadores de variables o palabras claves reservadas. Observe la diferencia entre estas dos expresiones:
Caracteres y literales de strings tambien pueden representar caracteres especiales que son difíciles o imposibles de expresar de otra manera en el código fuente del programa, como por ejemplo nueva línea (\n) ó tab (\t). Estos caracteres especiales están todos precedidos por un carácter de barra invertida (\).
Aquí tiene usted una lista de códigos de escape de un sólo carácter:
Por ejemplo:
Internamente, las computadoras representan a estos personajes como códigos numéricos: los ordenadores normalmente usan una extensión del sistema de codificación de caracteres ASCII (para ver más informaciones entre aquí). Los caracteres tambien se pueden representar en literales usando su código numérico escribiendo un carácter de barra invertida (\) seguido por el código expresado como un número octal (base-8) ó hexadecimal (base 16).
es equivalente a:
Tenga en cuenta que, a diferencia de los sufijos de tipo para literales enteros, estos prefijos son sensibles a mayúsculas y minúsculas:
En cadenas sin formato, las barras invertidas backslashes y las comillas simples y dobles son carácteres válidos; el contenido del literal está delimitado por un inicial R "secuencia (y un final) secuencia", donde secuencia es cualquier secuencia de caracteres(incluyendo una scuencia vacía).
El contenido de la cadena es lo que está dentro del paréntesis, ignorando la secuencia de delimitación en sí. Por ejemplo:
Este reemplazo es realizado por el preprocesador y sucede antes de que el programa sea compilado, provocando así una especie de reemplazo ciego: la validez de los tipos o sintaxis involucradas, no serán comprobadas de ninguna manera.
Por ejemplo:
Note usted que las lineas #define son directivas de pre-procesador y como tales son instrucciones de una sola línea - como las declaraciones C++ - no requieren punto y coma (;) al final, la directiva se extiende automáticamente hasta el final de la línea!, interezante no?
Literales
Los Literales son el tipo más obvio de constantes. Expresan valores particulares dentro del código fuente de un programa. Ya hemos utilizado algunos literales en capítulos anteriores para dar valores específicos a variables o para expresar mensajes que queríamos imprimir en pantalla, como por ejemplo, cuando escribimos:a = 5;El 5 en este pedazo de código era una constante literal.
Las constantes literales se pueden clasificar en:
- enteros integers,
- punto flotante,
- caracteres char,
- cadenas strings,
- booleanos bool,
- punteros y
- literales definidas por el usuario.
Números Enteros Integer:
1776Estas son constantes numéricas que identifican valores enteros integer. Tenga en cuenta que no se encierran entre comilllas o cualquier otro tipo carácter especial; ya que son una simple sucesión de cifras que representan un número entero en la base decimal; por ejemplo: 1776 representa siempre el valor mil setecientos setenta y séis.
707
-273
Tambien tenemos los números decimales y C++ permite el uso de números octales (osea de base 8) y números hexadecimales (base 16) como constantes literales. Para literales octales, los dígitos están precedidos de un carácter 0 (cero). Y para hexadecimal, están precedidos por los caracteres 0x (cero, x). Por ejemplo, las siguientes contantes literales son todas equivalentes entre sí:
75Todos ellos representan el mismo número que es: 75 (setenta y cinco) expresado como un numeral de base 10, numeral octal (0113) y numeral hexadecimal (0x4b), respectivamente.
0113
0x4b
Estas constantes literales tienen un tipo, al igual que las variables.
Por defecto, literales enteros son de tipo int. Sin embargo, ciertos sufijos pueden añadirse a un literal entero, para especificar un tipo de entero diferente:
Sufijo | Tipo de Modificador |
---|---|
u ó U | |
unsigned | |
l ó L | |
long | |
ll ó LL | |
long long |
Por ejemplo:
75 //intEn todos los casos encima, el sufijo puede ser especificado usando letras mayúsculas ó minúsculas.
75u //unsigned int
75l //long
75ul //unsigned long
75lu //unsigned long
Numeros de Punto Flotante
Expresan valores reales, con decimales y/o exponentes. Pueden incluir o un punto decimal ó un carácter e (que expresa "por diez elevado a la X", donde X es un valor entero que sigue al carácter e) ó un punto decimal y un carácter e, veamos todo esto en ejemplos:3.14159 // 3.14159Estos son cuatro números válidos con decimales, expresados en el lenguaje C++.
6.02e23 // 6.02 x 10^23
1.6e-19 // 1.6 x 10^-19
3.0 // 3.0
- El primer numero es PI,
- El segundo es el número de Avogadro,
- El tercero es la carga eléctrica de un electrón (un número extremadamente pequeño) y
- El cuarto es el número 3 expresado como literal numérico con punto flotante.
Sufijo | Tipo |
---|---|
f ó F | |
float | |
l ó L | |
long double |
Por ejemplo:
3.14159L // long doubleCualquiera de las letras que pueden formar parte de una constante numérica de punto flotante (e, f ó l) pueden ser escritas utilizando letras mayúsculas o minúsculas sin diferencia de significado.
6.02e23f // float
Literales de caracteres y strings
Los literales de caracteres y strings son colocados entre aspas ( ' ' ), veamos:'z'Las dos primeras expresiones representan literales de un sólo carácter y las dos siguientes representan literales de strings compuestas de varios carácteres.
'p'
"Hello World"
"How do you do?"
Observe que para representar un sólo carácter lo hemos incluído entre comillas simples ('z' ó 'p') y para expresar una string (que generalmente consta de más de un carácter), la incluimos con caracteres entre comillas dobles ( "Hello World" ó "How do you do?" ).
Los literales de un sólo carácter y de string requieren comillas que los rodeen para distinguirlos de posibles identificadores de variables o palabras claves reservadas. Observe la diferencia entre estas dos expresiones:
xAquí x sin aspas se refiere a un identificador, como el nombre de una variable o un tipo compuesto, mientras que 'x' (entre aspas simples) se referiría al carácter literal 'x' (o carácter que representa una letra minúscula x).
'x'
Caracteres y literales de strings tambien pueden representar caracteres especiales que son difíciles o imposibles de expresar de otra manera en el código fuente del programa, como por ejemplo nueva línea (\n) ó tab (\t). Estos caracteres especiales están todos precedidos por un carácter de barra invertida (\).
Aquí tiene usted una lista de códigos de escape de un sólo carácter:
Código de Escape | Descripción |
---|---|
\n | |
Nueva línea | |
\r | |
retornar | |
\t | |
Tabulación | |
\v | |
Tab Vertical | |
\b | |
backspace | |
\f | |
Feed de formulário (feed de página) | |
\a | |
alert (beep) | |
\' | |
Comilla simple single quote | |
\" | |
Comilla Doble double quote | |
\? | |
Simbolo de interrogación | |
\\ | |
back slash |
'\n'
'\t'
"izquierda \t Derecha"
"uno\ndos\ntres"
- Para un valor octal, la barra invertida es seguida directamente por los dígitos;
- mientras que para un valor hexadecimal, un carácter x se inserta entre la barra diagonal invertida y los dígitos hexadecimales a continuación (por ejemplo: \x20 ó \ x4A).
"esto forma" "una sola" " cadena "Lo anterior es una cadena literal equivalente a:
"de caracteres"
"esto formauna sola cadena de caracteres"Observe como los espacios dentro de las aspas son parte del literal mientras que los que estan fuera no lo son.
x = "string expresado en \
dos lineas"
es equivalente a:
x = "string expresado en dos lineas"Todos los literales de caracteres y literales de strings descritos anteriormente están formados por caracteres de tipo char. Se puede especificar un tipo de carácter diferente utilizando uno de los siguientes prefijos:
Prefijo | Tipo de Carácter |
---|---|
u | |
char16_t | |
U | |
char32_t | |
L | |
wchar_t |
- minúsculas para char16_t y
- mayúsculas para char32_t y wchar_t
Para literales de cadenas, aparte de lo anterior u, U y L, existen dos prefijos adicionales:
Prefijo | Descripción |
---|---|
u8 | |
El literal de string se codifica en el ejecutable usando UTF-8 | |
R | |
El literal de string es un string sin formato |
El contenido de la cadena es lo que está dentro del paréntesis, ignorando la secuencia de delimitación en sí. Por ejemplo:
R"(string con \backslash) "Ambas cadenas anteriores son equivalentes a "string con \\backslash". El prefijo R se puede combinar con cualquier otro prefijo, como u, L ó u8.
R"&%$(string con \backslash)&%$"
Otros Literales
Existen 3 literales de palabras claves en C++,
- true,
- false y
- nullptr
true y false son los dos valores posibles para variables de tipo bool.
nullptr es el valor del puntero nulo.
bool foo = true;
bool bar = false;
int* p = nullptr;
Tipos de Expresiones Constantes
A veces, es conveniente dar un nombre a un valor constante:const double pi = 3.1415926;A continuación, podemos utilizar estos nombres en lugar de los literales que se definieron, veamos esto en un ejemplo práctico:
const char tab = '\t';
//constantes
#include <iostream>
using namespace std;
//declarando constantes
const double pi = 3.14159;
const char nuevalinea = '\n';
int main()
{
//declarando variables
double r = 5.0; //radio
double circulo;
circulo = 2 * pi * r;
cout << circulo;
cout << nuevalinea;
}
Definiciones de PreProcesador (#define)
Otro mecanismo para nombrar valores constantes es el uso de definiciones de preprocesador. Estos tienen el siguiente formato:#define identifier replacementDespués de esta directiva #define, cualquier ocurrencia de identificador en el código se interpreta como reemplazo replacement, donde "replacement" es cualquier secuencia de caracteres (hasta el final de la línea).
Este reemplazo es realizado por el preprocesador y sucede antes de que el programa sea compilado, provocando así una especie de reemplazo ciego: la validez de los tipos o sintaxis involucradas, no serán comprobadas de ninguna manera.
Por ejemplo:
//constantes
#include <iostream>
using namespace std;
//declarando constantes
#define PI 3.14159
#define NUEVALINEA '\n'
int main()
{
//declarando variables
double r = 5.0; //radio
double circulo;
circulo = 2 * pi * r;
cout << circulo;
cout << nuevalinea;
}
Note usted que las lineas #define son directivas de pre-procesador y como tales son instrucciones de una sola línea - como las declaraciones C++ - no requieren punto y coma (;) al final, la directiva se extiende automáticamente hasta el final de la línea!, interezante no?
Culminado y entendido este paso, habremos llegado a una parte importante más de conocimientos para empezar a trabajar con C++, no podemos desistir si queremos llegar a desenvolver cualquier cosa con este maravilloso lenguaje!, más adelante veremos lo que son los Operadores en este lenguaje con lo cual iremos practicando con varios programas más complejos. No deje de practicar, eso es vital!
Post A Comment:
0 comments: