C++ Variables y tipos: Int, Char, Float, Double, Cadena y bool
Variables en C++
A C++ La variable nos proporciona una capacidad de almacenamiento con nombre. Permite al programador manipular datos segรบn la necesidad. Cada variable tiene un tipo en C++El tipo de variable ayuda a determinar el tamaรฑo y el diseรฑo del mapa de memoria de la variable, el rango de valores que se pueden almacenar dentro de esa memoria y el conjunto de operaciones que se le pueden aplicar.
Tipos bรกsicos de variables en C++
Estos son los tipos bรกsicos de C++ variables:
En t:
Un nรบmero entero es un literal numรฉrico (asociado con nรบmeros) sin ninguna parte fraccionaria o exponencial. Ejemplo. 120, -90, etc.
Double:
Es un valor de punto flotante de doble precisiรณn. Ejemplo: 11.22, 2.345
Carbonizarse:
Un literal de carรกcter se crea encerrando un solo carรกcter entre comillas simples. Por ejemplo: 'a', 'm', 'F', 'P', '}' etc.
Flotador:
Un literal de punto flotante es un literal numรฉrico que tiene forma fraccionaria o exponente. Por ejemplo: 1.3, 2.6
Literales de cadena:
Una cadena literal es una secuencia de caracteres entre comillas dobles. Por ejemplo: โยฟCรณmo estรกs?โ
booleano:
Mantiene el valor booleano verdadero o falso.
Reglas para declarar variables en C++
A continuaciรณn se muestran algunas reglas comunes para nombrar una variable:
- A C++ El nombre de la variable solo puede tener letras, nรบmeros y guiones bajos.
- A C++ El nombre de la variable no puede comenzar con un nรบmero.
- Los nombres de las variables no deben comenzar con un carรกcter en mayรบscula.
- Un nombre de variable utilizado en C++ no puede ser una palabra clave. Por ejemplo, int es una palabra clave que se utiliza para indicar nรบmeros enteros.
- A C++ El nombre de la variable puede comenzar con un guiรณn bajo. Sin embargo, no se considera una buena prรกctica.
C++ Tipos de datos variables
C++ define un conjunto completo de tipos primitivos
La funciรณn vacรญo El tipo no tiene valores asociados y solo se puede utilizar en algunas circunstancias. Es mรกs comรบn como tipo de retorno de funciones que no devuelven un valor.
La funciรณn tipos aritmรฉticos incluyen caracteres, nรบmeros enteros, valores booleanos y nรบmeros de punto flotante. Tipo aritmรฉtico si se divide en 2 categorรญas
- Tipos de coma flotanteLos nรบmeros de coma flotante (o flotantes) representan nรบmeros decimales. El estรกndar IEEE especifica un nรบmero mรญnimo de dรญgitos significativos. La mayorรญa de los compiladores suelen proporcionar una precisiรณn mayor que el mรญnimo especificado. Normalmente, los nรบmeros de coma flotante se representan con 32 bits, los dobles con 64 bits y los dobles largos con 96 o 128 bits.
- Tipos integrales (que incluyen caracteres, nรบmeros enteros y tipos booleanos). El Boolean type tiene sรณlo dos tipos de valores: Verdadero o Falso. Hay varios tanque tipos, la mayorรญa de los cuales existen para apoyar la internacionalizaciรณn. El tipo de carรกcter mรกs bรกsico es char. Un carรกcter tiene el mismo tamaรฑo que un solo byte de mรกquina, es decir, un solo byte.
La funciรณn Tipos integrales puede estar firmado o sin firmar.
Tipo firmado: Representan nรบmeros negativos o positivos (incluido el cero). En un tipo con signo, el rango debe dividirse uniformemente entre los valores +ve y -ve. Por lo tanto, un carรกcter con signo de 8 bits contendrรก valores desde โ127 hasta 127.
Tipo sin firmar: En un tipo sin signo, todos los valores son >= 0. Un carรกcter sin signo de 8 bits puede contener de 0 a 255 (ambos inclusive).
Nombre de variable o identificadores
Los identificadores pueden estar compuestos por algunas letras, dรญgitos y el carรกcter de subrayado o alguna combinaciรณn de ellos. No se impone ningรบn lรญmite a la longitud del nombre.
Los identificadores deben
- comience con una letra o un guiรณn bajo ('_').
- Y distinguen entre mayรบsculas y minรบsculas; Las letras mayรบsculas y minรบsculas son distintas:
// define cuatro variables int diferentes
int guru99, gurU99, GuRu99, GURU99;
La funciรณn C++ El idioma ha reservado algunos nombres para su uso.
Hay muchas convenciones aceptadas para nombrar variables en diferentes lenguajes de programaciรณnSeguir estas convenciones puede mejorar la legibilidad del programa.
- Un identificador deberรญa dar al menos alguna indicaciรณn de su significado.
- Los nombres de las variables suelen estar en minรบsculas: guru99, no Guru99 o GURU99.
- Las clases que definimos suelen comenzar con una letra mayรบscula.
- Los identificadores que contienen varias palabras deben distinguir visualmente cada palabra. Por ejemplo, guru99_website, no guru99website.
C++ Declaraciรณn y definiciรณn de variables
Una declaraciรณn de una variable hace que el programa conozca un nombre en el รกmbito en el que estรก definido. Ejemplo:
int a=5; int b; char c='A';
int a,b; a=b=1000;
List initialization
int a(5);
int b{5};
Calificador constante en C++
Supongamos que hay un tamaรฑo de beneficio variable que indica la cantidad de entradas que se tomarรกn del usuario. Aquรญ no queremos cambiar el valor de buffsize en todo el programa. Queremos definir una variable cuyo valor sabemos que no debe cambiar.
En tal caso, utilice la palabra clave const
const int bufSize = 512; // input buffer size
Esto define bufSize como una constante. Cualquier intento de asignar o cambiar bufSize genera un error.
Aquรญ no podemos cambiar el valor de un objeto constante despuรฉs de crearlo, debe declararse e inicializarse obligatoriamente. De lo contrario, el compilador genera un error.
const int i = get_size(); // ok: initialized at run time const int j = 42; // ok: initialized at compile time const int k; // error: k is uninitialized const int i = 42; const int ci = i; // ok: the value in i is copied into ci
Alcance de las variables en C++
Un alcance es un lapso de un programa donde una variable tiene un significado. Bรกsicamente, se puede utilizar el mismo nombre para referirse a diferentes entidades dentro de diferentes รกmbitos. Las variables son visibles desde el punto donde se declaran hasta el final del alcance en el que aparece su declaraciรณn.
#include <iostream>
int main()
{
int sum = 0;
// sum values from 1 through 10 inclusive
for (int val = 1; val <= 10; ++val)
sum += val; // equivalent to sum = sum + val
cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;
return 0;
}
Este programa define tres nombres: main, sum y val. Utiliza el nombre de espacio de nombres std, junto con otros dos nombres de ese espacio de nombres: cout y endl.
- El nombre de la funciรณn "principal" se define fuera de las llaves. El nombre de la funciรณn main, como la mayorรญa de los otros nombres definidos fuera de una funciรณn, tiene un alcance global. Lo que significa que una vez declarados, los nombres que estรฉn en el alcance global son accesibles durante todo el programa.
- La suma variable se define dentro del alcance del bloque que es el cuerpo de la funciรณn principal. Se puede acceder a รฉl desde su punto de declaraciรณn y desde el resto del cuerpo de la funciรณn principal. Sin embargo, no fuera de รฉl. Esto significa que la suma variable tiene alcance del bloque.
- La variable val se define en el alcance de la "declaraciรณn for". Se puede usar fรกcilmente en esa declaraciรณn pero no en otra parte de la funciรณn principal. Tiene alcance local.
Alcance anidado
El รกmbito puede contener otros รกmbitos. El รกmbito contenido (o anidado) se denomina รกmbito interno. El รกmbito contenedor es el รกmbito exterior.
#include <iostream>
using namespace std;
// Program for illustration purposes only: It is bad style for a function
// to use a global variable and also define a local variable with the same name
int reused = 42; // reused has global scope
int main()
{
int unique = 0; // unique has block scope
// output #1: uses global reused; prints 42 0
cout << reused << " " << unique << endl;
int reused = 0; // new, local object named reused hides global reused
// output #2: uses local reused; prints 0 0
cout << reused << " " << unique << endl;
// output #3: explicitly requests the global reused; prints 42 0
cout << ::reused << " " << unique << endl;
return 0;
}
Salida # 1 aparece antes de la definiciรณn local de reutilizado. Asรญ, esta salida
La declaraciรณn es la que utiliza el nombre reutilizado que estรก definido en el รกmbito global. Esta declaraciรณn produce
de 42
Salida # 2 ocurre despuรฉs de la definiciรณn local de reutilizado. Ahora estรก dentro del alcance. Por lo tanto, esta segunda declaraciรณn de salida simplemente usa el objeto local llamado reutilizado en lugar del global y genera
de 0
Salida # 3 anula las reglas de alcance predeterminadas utilizando el operador de alcance. El รกmbito global no tiene nombre. Por lo tanto, cuando el operador de alcance (::) tiene un lado izquierdo vacรญo. Lo interpreta como una solicitud para recuperar el nombre en el lado derecho del alcance global. Por lo tanto, la expresiรณn utiliza la reutilizaciรณn global y genera
de 42
Conversiรณn de tipo variable
Una variable de un tipo se puede convertir en otro. Se conoce como "Conversiรณn de tipo". Veamos las reglas para convertir diferentes C++ tipos de variables:
La asignaciรณn de un valor no bool a una variable bool da como resultado falso si el valor es 0 y verdadero en caso contrario.
bool b = 42; // b is true
La asignaciรณn de un bool a uno de los otros tipos aritmรฉticos produce 1 si el bool es verdadero y 0 si el bool es falso.
bool b = true; int i = b; // i has value 1
Asignar un valor de punto flotante a una variable de tipo int produce el valor que se trunca. El valor que se almacena es la parte anterior al punto decimal.
int i = 3.14; // i has value 3
La asignaciรณn de un valor int a una variable de tipo flotante da como resultado que la parte fraccionaria se convierta en cero. Generalmente se pierde precisiรณn si el nรบmero entero tiene mรกs bits de los que la variable flotante puede acomodar.
Int i=3; double pi = i; // pi has value 3.0
Si intentamos asignar un valor fuera de rango a una variable de tipo sin signo, el resultado es el resto del valor %(mรณdulo)
Por ejemplo, un tipo de carรกcter sin signo de 8 bits puede contener valores de 0 a 255, ambos inclusive. Asignar un valor fuera de este rango darรก como resultado que el compilador asigne el resto de ese valor en mรณdulo 256. Por lo tanto, segรบn la lรณgica anterior, la asignaciรณn de โ1 a un carรกcter sin signo de 8 bits le da a ese objeto el valor 255.
unsigned char c = -1; // assuming 8-bit chars, c has value 255
Si intentamos asignar un valor fuera de rango a un objeto de tipo con signo, el resultado es impredecible. No estรก definido. Puede parecer que el programa funciona en el exterior, puede fallar o puede producir valores basura.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined
El compilador aplica este mismo tipo de conversiones cuando usamos un valor de un tipo donde se espera un valor de otro tipo.
int i = 42; if (i) // condition will evaluate as true i = 0;
Si este valor = 0, entonces la condiciรณn es falsa; todos los demรกs valores (distintos de cero) dan como resultado verdadero. Segรบn el mismo concepto, cuando usamos un bool en una expresiรณn aritmรฉtica, su valor siempre se convierte a 0 o 1. Como resultado, usar un bool en una expresiรณn aritmรฉtica suele ser casi con seguridad incorrecto.
Precauciรณn: no mezcle tipos firmados y sin firmar
Las expresiones que combinan con y sin signo pueden producir resultados sorprendentes y errรณneos cuando el valor con signo es negativo. Como se mencionรณ anteriormente, los valores con signo se convierten automรกticamente a sin signo.
Por ejemplo, en una expresiรณn aritmรฉtica como
x* y
Si x es -1 e y es 1, y si tanto x como y son int, entonces el valor es, como se esperaba, -1.
Si x es int e y no tienen signo, entonces el valor de esta expresiรณn depende de cuรกntos bits tiene un nรบmero entero en la mรกquina compiladora. En nuestra mรกquina, esta expresiรณn produce 4294967295.
Registrar variables
Las variables de registro son de acceso mรกs rรกpido en comparaciรณn con las variables de memoria. Entonces, las variables que se usan frecuentemente en un C++ El programa se puede poner en registros usando Registro palabra clave. La palabra clave de registro le dice al compilador que almacene la variable dada en un registro. Es decisiรณn del compilador ponerlo en un registro o no. Generalmente, los propios compiladores realizan varias optimizaciones que incluyen colocar algunas de las variables en el registro. No hay lรญmite en el nรบmero de variables de registro en un C++ programa. Pero es posible que el compilador no almacene la variable en un registro. Esto se debe a que la memoria de registro es muy limitada y generalmente la utiliza el sistema operativo.
Definir:
register int i;
Comentarios
Los comentarios son las partes del cรณdigo ignoradas por el compilador. Permite al programador tomar notas en las รกreas relevantes del cรณdigo/programa fuente. Los comentarios vienen en forma de bloque o en lรญneas individuales. Los comentarios del programa son declaraciones explicativas. Se puede incluir en el C++ cรณdigo que ayuda a cualquiera a leer su cรณdigo fuente. Todos los lenguajes de programaciรณn permiten algรบn tipo de comentarios. C++ admite comentarios de una sola lรญnea y de varias lรญneas.
- Comentarios de una sola lรญnea son los que comienzan con // y continรบan hasta el final de la lรญnea. Si el รบltimo carรกcter de una lรญnea de comentario es \, el comentario continuarรก en la siguiente lรญnea.
- Comentarios de varias lรญneas son los que empiezan con /* y terminan con */.
/* This is a comment */ /* C++ comments can also * span multiple lines */
Secuencias de escape
Algunos caracteres, como la tecla de retroceso y los caracteres de control, no tienen una imagen visible. Estos caracteres se conocen como caracteres no imprimibles. Otros caracteres (comillas simples y dobles, signo de interrogaciรณn y barra invertida) tienen un significado especial en muchos lenguajes de programaciรณn.
Nuestros programas no pueden utilizar ninguno de estos caracteres directamente. En su lugar, podemos usar una secuencia de escape para representar dicho carรกcter. Una secuencia de escape comienza con una barra invertida.
La funciรณn C++ lenguaje de programaciรณn define varias secuencias de escape:
| ยฟQuรฉ hacer? | Caracter |
|---|---|
| Nueva lรญnea | \n |
| Pestaรฑa vertical | \v |
| Barra invertida | \\ |
| Retorno de carro | \r |
| Pestaรฑa horizontal | \t |
| Retroceso | \b |
| Signo de interrogaciรณn | \? |
| Avance de formulario | \f |
| Alerta (campana) | \a |
| Double cotizaciรณn inicial | \ " |
| Una frase | \ ' |
Usamos una secuencia de escape como si fuera un solo carรกcter:
cout << '\n'; // prints a newline cout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newline
Tambiรฉn podemos escribir secuencias de escape generalizadas \x seguidas de uno o mรกs dรญgitos hexadecimales. O usamos \ seguido de uno, dos o tres dรญgitos octales. La secuencia de escape generalizada representa el valor numรฉrico del carรกcter. Algunos ejemplos (asumiendo el conjunto de caracteres Latin-1):
\7 (bell) \12 (newline) \40 (blank)
\0 (null) \115 ('M') \x4d ('M')
Podemos usar secuencias de escape predefinidas, como estamos usando cualquier otro carรกcter.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newline cout << '\115' << '\n'; // prints M followed by a newline
Resumen
- A C++ La variable nos proporciona una capacidad de almacenamiento con nombre.
- C++ tipos de variables: int, double, tanque, flotador, cadena, bool, etc.
- El รกmbito contenido (o anidado) se denomina รกmbito interno y el รกmbito contenedor es el รกmbito externo.
- Una variable de un tipo se puede convertir en otro. Se conoce como "Conversiรณn de tipo".
- Las variables de registro son de acceso mรกs rรกpido en comparaciรณn con las variables de memoria.
- Los comentarios son las partes del cรณdigo ignoradas por el compilador.
- Algunos caracteres, como los de retroceso y de control, no tienen imagen visible.


