Las constantes son expresiones de valor fijo.
Los literales
Los literales son el tipo más obvio de constantes. Se utilizan para expresar valores particulares en el código fuente de un programa. Ya los hemos utilizado en capítulos anteriores para dar valores específicos a variables o para expresar mensajes que nuestros programas deberían imprimir, 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, coma flotante, caracteres, cadenas, booleanos, punteros y literales definidos por el usuario.
Números enteros
1776707-273
Estas son constantes numéricas que identifican valores enteros. Nótese que no están entre comillas ni ningún otro carácter especial; son una simple sucesión de números que representan un número entero en forma decimal; por ejemplo, 1876 siempre representa el valor mil ochocientos setenta y seis.
Además de los números decimales (los que la mayoría de nosotros usamos diariamente), C++ le permite usar números oktal (base 8) y números hexadecimales (base 16) como constantes literales. Para los literales de octeto, los números están precedidos por un carácter 0 (cero. Y para el hexadecimal, están precedidos por los caracteres 0x (cero, x. Por ejemplo, las siguientes constantes literales son todas equivalentes:
75 // decimal0113 // octal0x4b // hexadecimal
Todos representan el mismo número: 75 (setenta y cinco), expresados respectivamente en dígitos base 10, dígitos octeto y dígitos hexadecimales.
Estas constantes literales tienen un tipo, igual que las variables. Por defecto, los literales enteros son de tipo int. Sin embargo, se pueden añadir algunos sufijos a un entero literal para especificar un tipo de entero diferente:
SufijoTipo
u o U sin firmar
l o L largo
II o LL largo largo largo largo
Unsigned puede combinarse con cualquiera de los otros dos en cualquier orden para formar un largo sin firmar o un largo sin firmar.
Por ejemplo:
75 // int75u // unsigned int75l // long75ul // unsigned long75lu // unsigned long
En todos los casos anteriores, el sufijo se puede especificar en mayúsculas o minúsculas.
Dígitos en coma flotante
Expresan valores reales, con números y/o exponentes decimales. Pueden incluir un punto decimal, un carácter e, o un punto decimal y un carácter e:
3.14159 // 3.141596.02e23 // 6.02 x 10 ^ 231.6e-19 // 1.6 x 10 ^ -193.0 // 3.0
Estos son cuatro números válidos con decimales expresados en C ++. El primer número es PI, el segundo es el número Avogadro, el tercero es la carga eléctrica de un electrón (un número extremadamente pequeño) -todo aproximadamente- y el último es el número tres expresado por un número flotante. Punto literal digital.
El tipo por defecto para los literales en coma flotante es doble. Los literales en coma flotante de tipo flotante o doble tipo largo pueden especificarse añadiendo uno de los siguientes sufijos:
SufijoTipo
f or F float
L o L largo doble
Por ejemplo:
3.14159L // largo doble 6.02e23f // flotador
Todas las letras que pueden formar parte de una constante numérica de coma flotante (e, f, l) pueden escribirse usando letras minúsculas o mayúsculas sin ninguna diferencia de significado.
Las cadenas de caracteres
Las cadenas están entre comillas:
‘z’
‘p’
«Hola a todos».
«¿Cómo te va? »
Las dos primeras expresiones representan literales de un carácter y las dos siguientes representan literales de varios caracteres.
Tenga en cuenta que para representar un solo carácter, lo colocamos entre comillas simples (‘), y para expresar una cadena de caracteres (normalmente compuesta de varios caracteres), colocamos los caracteres entre comillas dobles («.
También lea Los punteros en C++
Literales de un solo carácter y cadenas de caracteres requieren comillas para distinguirlos de posibles identificadores de variables o palabras clave reservadas. Note la diferencia entre estas dos expresiones:
x
‘x’
Aquí, x solo se referiría a un identificador, como el nombre de una variable o un tipo compuesto, mientras que «x» (entre comillas simples) se referiría al carácter literal «x» (el carácter que representa una letra x minúscula.
Los literales de caracteres y cadenas también pueden representar caracteres especiales que son difíciles o imposibles de expresar de otra manera en el código fuente de un programa, como nuevas líneas (\ n) o tabulaciones (\ t. Estos caracteres especiales están precedidos por un carácter de barra invertida (\.
Aquí tiene una lista de códigos de escape únicos:
Código de escapeDescripción
\ Una nueva línea
.
\ r retorno de carr
o
\ La pestaña»
T
\ La lengüeta vertica
l
\ b al revés.
\ f form feed (alimentación de página
)
\ una alerta (bip)
\una simple cita (‘)
\» doble cita («)
\? signo de interrogación (?)
\\\ antislash (\)
Por ejemplo:
‘\ n’
‘\ t’
«Izquierda, derecha.»
«uno, dos, tres»
Internamente, los ordenadores representan caracteres en forma de códigos numéricos: la mayoría de las veces, utilizan una extensión del sistema de codificación de caracteres ASCII (para más información, véase Código ASCII. Los caracteres también pueden ser representados 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) o hexadecimal (base 16. Para un valor octal, la barra invertida es seguida directamente por los números; mientras que para el hexadecimal, se inserta un carácter x entre la barra invertida y los números hexadecimales mismos (por ejemplo: \ x20 o \ x4A.
Se pueden concatenar varias cadenas literales para formar una sola cadena literal simplemente separándolas por uno o más espacios vacíos, incluyendo tabuladores, nuevas líneas y otros caracteres vacíos válidos. Por ejemplo:
Lo anterior es una cadena literal equivalente a:
Tenga en cuenta que los espacios entre comillas forman parte del literal, mientras que los espacios entre comillas no forman parte del literal.
Algunos programadores también usan un truco para incluir literales de cadenas largas en varias líneas: en C++, una barra invertida (\) al final de la línea se considera un carácter de continuación de línea que fusiona esta línea y la siguiente en una sola línea. Así que el siguiente código:
x = "cadena expresada en dos líneas"
es equivalente a:
x = "cadena expresada en dos líneas"
Todos los caracteres y literales de cadena descritos anteriormente están formados por caracteres de caracteres. Se puede especificar un tipo de carácter diferente utilizando uno de los siguientes prefijos:
También lea las cadenas de caracteres en C++++ Tipo de
PrefijoCarácter
u char16_t
U char32_t
L wchar_t
Tenga en cuenta que, a diferencia de los sufijos de tipo para literales enteros, estos prefijos distinguen entre mayúsculas y minúsculas: minúsculas para char16_t y mayúsculas para char32_t y wchar_t.
Para los literales de cadena, además de los valores u, U y L anteriores, hay dos prefijos adicionales:
PrefijoDescripción
u8 El literal de la cadena se codifica en el ejecutable utilizando UTF-8.
R La cadena literal es una cadena en bruto
En las cadenas en bruto, las barras invertidas, las comillas simples y dobles son todos caracteres válidos; el contenido del literal está delimitado por una R inicial «secuencia (y secuencia final)», donde la secuencia es cualquier secuencia de caracteres (incluyendo una secuencia vacía. El contenido de la cadena es lo que está dentro del paréntesis, ignorando la secuencia de delimitación misma. Por ejemplo:
R" (cadena con barra invertida)"R" &% $ (cadena con antideslizante) &% $"
Las dos cadenas anteriores son equivalentes a «cadena con barra invertida». El prefijo R se puede combinar con otros prefijos, como u, L o u8.
Otros
En C++ existen tres literales de palabras clave: verdadero, falso y nullptr:
true y false son los dos valores posibles para las variables de bool.
nullptr es el valor del puntero nulo.
bool foo = true;bool bar = false;int * p = nullptr;
Expresiones mecanografiadas
A veces es conveniente dar un nombre a un valor constante:
pi doble constante = 3,1415926;
const char tab =’\ t’;
Entonces podemos usar estos nombres en lugar de los literales para los que han sido definidos:
#include <iostream>using namespace std;const double pi = 3.14159;const char newline ='\n';int main (){double r=5.0; // radiusdouble circle;circle = 2 * pi * r;cout <<<< circle;cout <<<< newline;}
Otros consejos interesantes:
- Cuerdas en C++ La clase de cuerda se introdujo brevemente en un capítulo anterior. Es una clase muy poderosa para manipular y manipular cuerdas. Sin embargo, como las cadenas son en realidad secuencias de……
- Las E/S en C++ Los ejemplos de programa de las secciones anteriores ofrecían poca o ninguna interacción con el usuario. Simplemente imprimieron valores simples en la pantalla, pero la biblioteca estándar ofrece muchas otras formas……
- Punteros en C++ En los capítulos anteriores, las variables se han explicado como ubicaciones en la memoria del ordenador a las que se puede acceder mediante su identificador (nombre. De esta manera, el programa no necesita….
- Estructura de un programa en C++ La mejor manera de aprender un lenguaje de programación es escribir programas. Normalmente, el primer programa que los principiantes escriben es un programa llamado «Hello World», que simplemente muestra «Hello World» en la pantalla de……
- C++ Ejercicios con soluciones Ejercicios corregidos en el lenguaje C++, descargue también la lista completa de ejercicios (lenguaje C, C++, tablas, punteros,…. Vea a continuación una serie de ejercicios para descargar. Ejercicios 1: Escribir un programa en C….