Ejemplos de obtención de solicitud curl php. Creando solicitudes GET y POST usando Curl. Subir archivos usando POST

Tipo entero (int)

Tamaño del tipo entero no está definido por el estándar, pero depende de la computadora y del compilador.

Para un procesador de 16 bits, se asignan 2 bytes para valores de este tipo,

para 32 bits: 4 bytes.

Especificador corto antes del nombre del tipo indica al compilador que se deben asignar 2 bytes para el número, independientemente de la profundidad de bits del procesador.

Especificador largo significa que el valor entero ocupará 4 bytes.

Entonces, en una computadora de 16 bits, los equivalentes de int e int corto son

y en 32 bits: int y long int.

Representación interna valores de tipo entero - entero en código binario. Cuando se utiliza el especificador firmado El bit más significativo del número se interpreta como uno con signo (0 es un número positivo, 1 es un número negativo). Especificador no firmado permite representar sólo números positivos, ya que el bit más significativo se trata como parte del código del número. Así, el rango de valores escribe int Depende de los especificadores. Rangos de valores de cantidades de tipo entero con varios especificadores para Compatible con PC IBM Las computadoras se dan en la tabla “Rangos de valores tipos simples datos."

De forma predeterminada, todos los tipos de enteros se consideran con signo, lo que significa que se puede omitir el especificador con signo.

A las constantes que se encuentran en un programa se les asigna un tipo u otro según su tipo. Si por alguna razón no le conviene al programador, puede indicar explícitamente el tipo requerido utilizando los sufijos L, l (largo) y U, u (sin firmar). Por ejemplo, la constante 32L tendría tipo largo y ocupa 4 bytes. Puede utilizar los sufijos L y U al mismo tiempo, por ejemplo, 0x22UL o 05Lu.

Nota. Los tipos int corto, int largo, int con signo y int sin signo se pueden abreviar a corto, largo, con signo y sin signo, respectivamente.

Tipo de carácter (char)

A un valor de tipo de carácter se le asigna una cantidad de bytes suficiente para acomodar cualquier carácter del conjunto de caracteres para de esta computadora, que determinó el nombre del tipo. Normalmente es de 1 byte. El tipo char, al igual que otros tipos de enteros, puede tener o no signo. Los valores con signo pueden almacenar valores en el rango de -128 a 127. Usando el especificador sin signo, los valores pueden variar de 0 a 255. Esto es suficiente para almacenar cualquier carácter en el rango de 256 caracteres. Conjunto ASCII. Cantidades tipo carbón También se utilizan para almacenar números enteros.



Tipo de carácter extendido (wchar_t)

Tipo wchar_t diseñado para trabajar con un conjunto de caracteres para los cuales 1 byte no es suficiente para codificar. Por ejemplo, Unicode. El tamaño de este tipo depende de la implementación; por regla general, corresponde al tipo corto. Constantes de cadena Los tipos wchar_t se escriben con el prefijo L, por ejemplo, L“Gates”.

Tipo booleano (bool)

Cantidades tipo booleano sólo puede tomar valores verdadero Y FALSO, que son palabras reservadas. Formulario de representación interna valores falsos- 0 (cero). Cualquier otro valor se interpreta como verdadero. Al convertir a un tipo entero verdadero tiene el valor 1.

Tipos de coma flotante (flotante, doble y doble largo)

El estándar C++ define tres tipos de datos para almacenar valores reales: flotante, doble y doble largo.

Los tipos de datos de punto flotante se almacenan en la memoria de forma diferente a los tipos de datos enteros. Representación interna numero real consta de dos partes - mantisa Y orden.

En IBM Computadoras compatibles con PC cantidades de tipo flotar ocupan 4 bytes, de los cuales se asigna un dígito binario bajo el signo de la mantisa, 8 dígitos en orden y 23 bajo la mantisa. La mantisa es un número mayor que 1,0 pero menor que 2,0. Como el dígito inicial de la mantisa es siempre 1, no se almacena.

Para cantidades de tipo doble, Al ocupar 8 bytes, se asignan 11 y 52 bits para el orden y la mantisa, respectivamente. La longitud de la mantisa determina la precisión del número y la longitud del exponente determina su rango. Como puede ver en la tabla al final de la entrada, con la misma cantidad de bytes asignados para valores float y long int, los rangos de sus valores permitidos difieren mucho debido a la forma de representación interna.

Especificador largo antes del nombre del tipo doble indica que se asignan 10 bytes para su valor.

Las constantes de punto flotante son de tipo doble de forma predeterminada. Puede especificar explícitamente el tipo de constante utilizando los sufijos F, f (flotante) y L, l (largo).

Por ejemplo, la constante 2E+6L será de tipo long double y la constante 1.82f será de tipo float.

Al escribir universales para diferentes plataformas Los programas no pueden hacer suposiciones sobre el tamaño del tipo. int. Para obtenerlo se debe utilizar la operación sizeof, cuyo resultado es el tamaño del tipo en bytes.

Por ejemplo, para un quirófano. sistemas MS-DOS sizeof(int) dará como resultado 2, pero en Windows 98 u OS/2 el resultado será 4.

El estándar ANSI no especifica rangos de valores para tipos básicos; solo se definen las relaciones entre sus tamaños, por ejemplo:

tamaño de (flotante) ≤ tamaño de (doble) ≤ tamaño de (doble largo)
tamaño de (char) ≤ tamaño de (corto) ≤ tamaño de (int) ≤ tamaño de (largo)

Nota. Mínimo y máximo valores válidos para los tipos de números enteros dependen de la implementación y se proporcionan en el archivo de encabezado (), características tipos reales- en el archivo (), así como en la plantilla de clase numeric_limits

tipo vacío

Además de los enumerados, los principales tipos de lenguaje incluyen el tipo void, pero el conjunto de valores de este tipo está vacío. Se utiliza para definir funciones que no devuelven un valor, para especificar una lista vacía de argumentos de función, como tipo básico para punteros y en operaciones de fundición tipográfica.

Varios tipos Se introdujeron tipos enteros y reales, que difieren en el rango y la precisión de la representación de datos, para brindar al programador la oportunidad de utilizar de manera más efectiva las capacidades de equipos específicos, ya que la velocidad de los cálculos y la cantidad de memoria dependen de la elección de tipo. Pero un programa optimizado para cualquier tipo de computadora puede no ser portátil a otras plataformas, por lo que caso general Deben evitarse las dependencias de características específicas de los tipos de datos.

Tipo Rango de valores Tamaño (bytes)
booleano verdadero y falso
carácter firmado -128 … 127
carácter sin firmar 0 … 255
int corto firmado -32 768 … 32 767
int corto sin firmar 0 … 65 535
firmado int largo -2 147 483 648 … 2 147 483 647
int largo sin firmar 0 … 4 294 967 295
flotar 3.4e-38… 3.4e+38
doble 1.7e-308… 1.7C+308
doble largo 3.4e-4932 … 3.4e+4932

Estructura del programa

Un programa C++ consta de funciones, descripciones Y directivas del preprocesador. Una de las funciones debe tener un nombre. principal. La ejecución del programa comienza con la primera declaración de esta función. La definición de función más simple tiene el siguiente formato:

Normalmente, se utiliza una función para calcular un valor, por lo que su tipo se indica antes del nombre de la función. A continuación se muestran los más información necesaria sobre las funciones:

  • si la función no debe devolver un valor, se especifica el tipo void:
  • el cuerpo de la función es un bloque y, por lo tanto, está encerrado entre llaves;
  • las funciones no se pueden anidar;
  • Cada declaración termina con un punto y coma (excepto la declaración compuesta).

Un ejemplo de una estructura de programa que contiene funciones principales, fl y f2:

El programa puede constar de varios módulos(archivos fuente).

Notas sobre E/S en C++

El lenguaje C++ no tiene funciones de entrada/salida integradas: se lleva a cabo utilizando funciones, tipos y objetos contenidos en bibliotecas estándar.

Se utilizan dos métodos: funciones heredadas del lenguaje C y objetos C++.

Funciones básicas de E/S estilo C:

int scanf (formato const char*, ...) // entrada
int printf(const char* formato, ...) // salida

Realizan entrada y salida formateada de un número arbitrario de valores según una cadena formato formato. La cadena de formato contiene caracteres que se copian en la secuencia (en la pantalla) en la salida o se solicitan desde la secuencia (desde el teclado) en la entrada, y especificaciones de conversión que comienzan con el signo%, que se reemplazan por valores específicos en la entrada. y salida.

Un programa de ejemplo que utiliza funciones de E/S estilo C:

#incluir
int principal() (
ent yo;
printf("Ingrese un número entero\n");
scanf("%d", &i);
printf("Ingresaste el número %d, ¡gracias!", i);
devolver 0;
}

La primera línea de este programa es una directiva de preprocesador que inserta archivo de encabezado, que contiene una descripción de las funciones de entrada/salida utilizadas en el programa (en en este caso los corchetes angulares son un elemento del lenguaje). Todas las directivas del preprocesador comienzan con el signo #.

La tercera línea es una descripción de una variable de tipo entero denominada i.

La función printf en la línea cuatro imprime el mensaje "Ingrese un número entero" y va a nueva linea de acuerdo con secuencia de escape\norte. La función scanf coloca el número entero ingresado desde el teclado en la variable i (el signo & significa la operación de obtener la dirección), y la siguiente declaración muestra la cadena especificada en ella, reemplazando la especificación de conversión con el valor de este número.

Programa que utiliza la biblioteca de clases C++:

#incluir
int principal() (
ent yo;
corte<< "Введите целое число\norte"; cin >> i;
corte<< "Вы ввели число " << i << ", спасибо!";
devolver 0;
}

El archivo de encabezado contiene una descripción de un conjunto de clases para gestionar la entrada/salida. Define objetos de flujo estándar. cin para entrada de teclado y corte para visualización, así como la operación de colocación en un flujo< < и чтения из потока >>.

Puede utilizar ambos métodos para organizar la entrada/salida, pero no se recomienda mezclarlos en un solo programa.

Para almacenar números reales, se utilizan los tipos de datos float (precisión simple) y double (doble precisión). El significado de los signos "+" y "-" para los tipos reales es el mismo que para los tipos enteros. Se ignoran los últimos ceros iniciales a la derecha del punto decimal. Por tanto, las entradas +523,5, 523,5 y 523,500 representan el mismo valor.

Se utilizan dos formatos para representar números reales:

punto fijo

[signo][parte entera].[parte fraccionaria]

Por ejemplo: –8,13; .168 (igual que 0.168); 183. (igual que 183,0).

coma flotante (forma exponencial) mantisa orden E/e

Por ejemplo: 5.235e+02 (5.235 x 102 = 523,5); –3,4E-03 (–3,4 x 10-03 = – 0,0034)

En la mayoría de los casos, se utiliza el tipo doble; proporciona mayor precisión que el tipo flotante. La máxima precisión y el mayor rango de números se logra utilizando el tipo doble largo.

Un valor con el modificador de tipo flotante ocupa 4 bytes. De ellos, se asigna 1 bit para el signo, 8 bits para el exponente excedente y 23 bits para la mantisa. Tenga en cuenta que el bit más significativo de la mantisa es siempre 1, por lo que no está lleno y, por lo tanto, el rango del módulo de una variable de punto flotante es aproximadamente 3,14E–38 a 3,14E+38.

Un valor doble ocupa 8 bytes en la memoria. Su formato es similar al formato flotante. Los bits de memoria se distribuyen de la siguiente manera: 1 bit para el signo, 11 bits para el exponente y 52 bits para la mantisa. Teniendo en cuenta el bit alto omitido de la mantisa, el rango de módulos de valores variables de doble precisión es de 1,7E–308 a 1,7E+308.

Un valor doble largo es lo mismo que un valor doble.

Por ejemplo:

6. Tipo de datos de carácter (tipo char)

No existe ningún tipo de datos en el estándar C++ que pueda considerarse verdaderamente de carácter. Para representar información de caracteres, existen dos tipos de datos adecuados para este propósito: char y wchar_t.

Una variable char está diseñada para almacenar solo un carácter (por ejemplo, una letra o un espacio). En la memoria de la computadora, los caracteres se almacenan como números enteros. La correspondencia entre caracteres y sus códigos está determinada por la tabla de codificación, que depende de la computadora y Sistema operativo. Casi todas las tablas de codificación contienen letras mayúsculas y minúsculas del alfabeto latino, números 0, ..., 9 y algunos caracteres especiales. La tabla de codificación más común es la tabla de caracteres ASCII (Código estándar americano para el intercambio de información).

Dado que los caracteres se almacenan como números enteros en la memoria de la computadora, el tipo char es en realidad un subconjunto del tipo int.

Se asigna 1 byte para un valor de tipo de carácter.

El tipo char se puede utilizar con los especificadores firmados y sin firmar. El tipo de datos char firmado puede almacenar valores en el rango de -128 a 127. Con el tipo char sin signo, los valores pueden estar en el rango de 0 a 255. La codificación es ASCII. Los caracteres con códigos del 0 al 31 son caracteres de servicio y tienen un significado independiente sólo en declaraciones de E/S.

Los valores de tipo char también se utilizan para almacenar números de rangos específicos.

El tipo wchar_t está diseñado para funcionar con un conjunto de caracteres para los cuales 1 byte no es suficiente para codificar, por ejemplo, en codificación Unicode. El tamaño del tipo wchar_t es de 2 bytes. Si un programa necesita utilizar constantes de cadena del tipo wchar_t, se escriben con el prefijo L, por ejemplo, L "Palabra".

Por ejemplo:

char r=("A","B","C","D","E","F","\0");

Respuesta:
  1. Tipos de datos enteros:

int corto, int corto sin signo, int, int sin signo, largo, largo sin signo.

  1. Tipos de datos de coma flotante (correspondientes a tipos reales):

flotador, doble, doble largo.

  1. Tipo de datos de carácter:

char (carácter firmado), char sin firmar, wchar_t.

  1. Tipo de datos booleanos:

booleano.

  1. Tipo de datos enumerados (introducido en Visual C++):

enumeración.

2. ¿Cuáles son las características del uso de tipos de datos enteros?

En C++, los principales tipos de datos enteros son: short int, unsigned short int, int, unsigned int, long (long int), unsigned long (unsigned long int).

Estos tipos de datos representan valores de un conjunto de números enteros. Por ejemplo:

2 -100 398

Los tipos de datos que comienzan con el prefijo sin signo solo pueden contener números positivos.

Los datos del tipo short int, unsigned short int ocupan la mitad del espacio de memoria que los datos del tipo int, unsigned int.

Los datos de tipo long, unsigned long ocupan el doble de espacio de memoria que los datos de tipo int, unsigned int.

3. ¿Cómo describir una variable llamada x de tipo entero en un programa?

Respuesta:
intx; // entero con signo

Como resultado, bajo la variable incógnita Se asignará un espacio de memoria de 4 bytes. El tamaño de la memoria asignada para una variable depende de las características de la computadora, el tipo de sistema operativo y la configuración del compilador.

4. ¿Cómo escribir el número 239 en una variable de tipo entero?

Para hacer esto, use el operador de asignación, que se indica con el símbolo '='.

Respuesta 1. Ingresar un número en una variable después de su descripción.

intx; x = 239;

Respuesta 2. Ingresar un número en una variable durante su descripción (inicialización inicial).

entero x = 239;

5. ¿Cuáles son las características de los tipos de datos de punto flotante?

Los tipos de datos de coma flotante le permiten representar valores de un conjunto de números reales. Por ejemplo:

8.35 -990.399 239.0.

C++ tiene los siguientes tipos de datos básicos de punto flotante:

flotador, doble, doble largo.

Una variable de tipo double ocupa 2 veces más espacio en la memoria de la computadora que una variable de tipo float.

Además, una variable larga de tipo doble ocupa 2 veces más espacio en la memoria de la computadora que una variable de tipo doble.

6. ¿Cómo describir una variable que toma un valor de coma flotante?

Un ejemplo de descripción de variables de tipo flotante, doble y doble largo:

flotador f; doble d; largo doble ld;

7. ¿Cómo escribir valores numéricos en una variable de punto flotante?

Un ejemplo de cómo ingresar datos numéricos en variables de punto flotante:

flotador f = -9928,45; // inicialización inicial doble d; largo doble ld; d = 0,445332; // operador de asignación ld = 3892923898239,030903; // operador de asignación

8. ¿Cómo convertir una variable flotante a un tipo int?

Para ello se utiliza la operación de fundición de tipos. Entre paréntesis debe indicar el nombre del tipo al que se va a convertir.

flotar un; intb; a = 8,457; b = (int) a; // b = 8

Al utilizar operaciones de conversión de tipos, es necesario tener en cuenta las restricciones que se imponen a los tipos que ocupan menos espacio en la memoria de la computadora.

Por ejemplo, una variable de tipo short int puede representar un rango de números más pequeño que las variables de tipo float o double. El siguiente listado desborda un valor en una variable de tipo short int:

corto ent i; flotador f; f = 3990099,8; yo = (int )f; // i = -7597 - desbordamiento

9. ¿Cómo convertir una variable de tipo int a tipo double?

Ejemplo de conversión de int a double:

ent yo; doble d; yo = 982; d = (doble)i; // d = 982,0

10. ¿Cuáles son las características del uso de datos de caracteres (datos de caracteres) en un programa?

Los datos de tipo char representan el valor del carácter del código ingresado desde el teclado. El código de símbolo es un número entero.

Por ejemplo, el código del carácter 'f' es 102.

Un fragmento de código que calcula el código de carácter:

código entero; símbolo de carbón; símbolo = "f"; código = (int) símbolo; // código = 102

Los datos de tipo char son los mismos números enteros. Los datos de tipo char ocupan 1 byte en la memoria de la computadora.

La relación carácter-código se encuentra en la tabla de símbolos de Windows. Los caracteres con códigos del 0 al 127 son caracteres reservados del BIOS. Incluyen los símbolos más utilizados, símbolos numéricos y símbolos latinos. Estos caracteres no se pueden cambiar.

Los caracteres con códigos del 128 al 255 son caracteres regionales vinculados a un alfabeto específico de la computadora en la que está instalado el sistema operativo Windows.

11. ¿Cuáles son las características del uso del tipo de datos bool (tipo lógico)?

Las variables de tipo bool sólo pueden tomar dos valores:

verdadero - verdad,

falso - falso.

Estas variables se utilizan para probar expresiones booleanas. El valor numérico de verdadero es 1. El valor numérico de false es 0 .

Fragmento de código que define los valores numéricos verdadero y falso:

resultado entero; booleano b; resultado = (int)verdadero; // resultado = 1 b = falso; resultado = (int )b; // resultado = 0

Fragmento de código que convierte los tipos int y float a bool:

ent yo; flotador f; booleano b; yo = 6; b = (booleano)i; //b = Verdadero f = 0,0; b = (booleano)f; //b = Falso

12. ¿Cómo determinar el tamaño de memoria que ocupa una variable de un tipo determinado?

Para esto se utiliza la operación sizeof().

Un fragmento de código que define el tamaño de algunos tipos de datos:

int d; d = tamaño de(char); // re = 1 d = tamaño de (int sin signo); // re = 4 d = tamaño de (flotante); // re = 4 d = tamaño de (doble); // re = 8

13. ¿Cómo se inicializan variables de diferentes tipos?

int d = 28; flotador z = (flotante) 2,85; carácter c = "k"; Cadena ^s = "¡Hola!" ; doble r = -8,559;

14. ¿Cómo determinar el valor máximo permitido (mínimo permitido) de una variable de un determinado tipo?

Para determinar el valor máximo o mínimo de una variable de un determinado tipo, la biblioteca .NET Framework utiliza las propiedades MaxValue y MinValue.

Ejemplos de determinación de valores límite de variables de diferentes tipos.

Para variables de tipo int:

// escribe int ent yo; largo MaxInt; MinInt largo; MaxInt = (largo)i.MaxValue; // MaxInt = 2147483647 MinInt = (largo)i.MinValue; // MinInt = -2147483648

Para variables de tipo short int :

// escribe int corto corto int si; intMaxInt; intMinInt; MaxInt = (int)si.MaxValue; // MaxInt = 32767 MinInt = (int )si.MinValue; // MinInt = -32768

Para variables de tipo int unsigned:

// escribe int sin firmar interfaz de usuario interna sin firmar; int sin firmar MaxInt; int sin firmar MinInt; MaxInt = ui.MaxValue; // MaxInt = 4294967295 MinInt = ui.MinValue; // MinInt = 0

Para variables flotantes:

// tipo flotante flotador f; flotante MaxF; flotar MinF; MaxF = f.MaxValue; // MáxF = 3,402823E+38 MinF = f.MinValue; // MinF = -3.402823E+38

Para variables de tipo doble:

// doble tipo doble d; doble MaxD; doble Mente; Máx = d.MaxValue; // Máximo = 1,79769313486232E+308 Mín = d.MinValue; // Mín = -1,79769313486232E+308

Para variables de tipo char:

// escribe carácter carácter c; int MaxC; intMinC; Máx = (int)c.MaxValue; // Máximo = 127 Mín = (int)c.MinValue; // Mín = -128

15. ¿Cuáles son las características del uso del tipo enum?

El tipo de enumeración es un tipo de datos de enumeración. Especifica valores mnemotécnicos para conjuntos de valores enteros. Cada valor mnemotécnico tiene un contenido específico y está representado por un número entero.

Un ejemplo del uso del tipo enum para representar meses del año:

meses de enumeración (enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre) mn; min = enero; // min = 0 min = marzo; // min = 2 min = septiembre; // min = 8

El siguiente ejemplo describe una variable denominada mn de tipo enumeración meses. Los valores mnemotécnicos para los meses (enero, febrero,…) comienzan desde 0 (0, 1, 2,…). El mnemónico de enero es el valor entero 0, el mnemónico de febrero es el valor entero 1, y así sucesivamente.

Por lo tanto, al utilizar el tipo enum, se pueden utilizar mnemotécnicos en el texto del programa para una mayor claridad del código fuente.

También puedes escribirlo así:

mn = (enumeración de meses)2; // min = marzo mn = (enumeración de meses)11; // mn = diciembre

16. ¿Cuáles son las características del tipo?vacío en programas dedo++ ?

El tipo de datos nulo se utiliza en los siguientes casos:

  • si necesita describir una función que no devuelve ningún valor (ver ejemplo);
  • si necesita describir una función que no recibe parámetros (ver ejemplo).

Ejemplo. MyFun() es una función sin parámetros que no devuelve ningún valor (devuelve tipo void ) y no toma parámetros.

público: anular MyFun (anular) { // cuerpo de la función // ... devolver; // regresa de una función que no devuelve un valor } // llama a una función desde el programa ... MiDiversión(); ...

17. ¿Es posible declarar una variable de tipo?vacío en el programa?

Esto no es posible porque el tipo de anulación no está asociado con un valor.

Declarar una variable de tipo void da como resultado un error de compilación con el siguiente mensaje:

"Uso ilegal de tipo nulo"

18. ¿Cuáles son las características del tipo?wchar_ t VVisual do++ ?

Las variables de tipo char (ver párrafos anteriores) se utilizan para almacenar caracteres ASCII de 8 bits.

El tipo wchar_t se utiliza para almacenar caracteres que forman parte de conjuntos de caracteres grandes. Por ejemplo, el alfabeto chino tiene una gran cantidad de caracteres. 8 dígitos no son suficientes para representar el conjunto completo de caracteres chinos. Por tanto, si necesita utilizar el programa en el mercado internacional, es recomendable sustituir el tipo char por wchar_t.

Ejemplo usando el tipo wchar_t.

... wchar_tt; // Se asignan 2 bytes de memoria para la variable t t = "s"; ...

Última actualización: 17/09/2017

Cada variable tiene un tipo específico. Y este tipo determina qué valores puede tener una variable, qué operaciones se pueden realizar sobre ella y cuántos bytes en la memoria ocupará. Los siguientes tipos de datos básicos están definidos en el lenguaje C++:

    bool: tipo booleano. Puede tomar uno de dos valores: verdadero y falso. La huella de memoria para este tipo no está definida con precisión.

    char: representa un único carácter ASCII. Ocupa 1 byte (8 bits) en memoria. Puede almacenar cualquier valor de -128 a 127 o de 0 a 255

    char firmado: Representa un solo carácter. Ocupa 1 byte (8 bits) en memoria. Puede almacenar cualquier valor de -128 a 127

    carácter sin firmar: representa un solo carácter. Ocupa 1 byte (8 bits) en memoria. Puede almacenar cualquier valor de 0 a 255

    wchar_t: Representa un carácter amplio. En Windows ocupa 2 bytes (16 bits) de memoria, en Linux ocupa 4 bytes (32 bits). Puede almacenar cualquier valor en el rango de 0 a 65.535 (para 2 bytes) o de 0 a 4.294.967.295 (para 4 bytes)

    char16_t: representa un único carácter Unicode. Ocupa 2 bytes (16 bits) en memoria. Puede almacenar cualquier valor de 0 a 65.535

    char32_t: representa un único carácter Unicode. Ocupa 4 bytes (32 bits) en memoria. Puede almacenar cualquier valor de 0 a 4.294.967.295

    corto: representa un número entero en el rango –32768 a 32767. Ocupa 2 bytes (16 bits) de memoria.

    Este tipo también tiene sinónimos short int, short int con signo, short con signo.

    corto sin signo: representa un número entero en el rango de 0 a 65535. Ocupa 2 bytes (16 bits) de memoria.

    Este tipo también tiene un sinónimo unsigned short int .

    int: representa un número entero. Dependiendo de la arquitectura del procesador, puede ocupar 2 bytes (16 bits) o 4 bytes (32 bits). En consecuencia, el rango de valores límite también puede variar de –32768 a 32767 (con 2 bytes) o de −2 147 483 648 a 2 147 483 647 (con 4 bytes). Pero en cualquier caso, el tamaño debe ser mayor o igual al tamaño del tipo corto y menor o igual al tamaño del tipo largo.

    Este tipo tiene sinónimos firmado int y firmado.

    int sin signo: representa un número entero positivo. Dependiendo de la arquitectura del procesador, puede ocupar 2 bytes (16 bits) o 4 bytes (32 bits), por lo que el rango de valores límite puede variar: de 0 a 65535 (para 2 bytes), o de 0 a 4.294.967.295 (para 4 bytes).

    sin firmar se puede utilizar como sinónimo de este tipo

    de largo: representa un número entero en el rango de −2,147,483,648 a 2,147,483,647. Ocupa 4 bytes (32 bits) de memoria.

    Este tipo también tiene sinónimos long int, firmado long int y firmado largo

    largo sin signo: representa un número entero en el rango de 0 a 4.294.967.295. Ocupa 4 bytes (32 bits) de memoria.

    Tiene el sinónimo unsigned long int .

    long long: representa un número entero en el rango −9,223,372,036,854,775,808 a +9,223,372,036,854,775,807. Normalmente ocupa 8 bytes (64 bits) de memoria.

    Tiene sinónimos long long int, firmado long long int y firmado long long.

    unsigned long long: representa un número entero en el rango de 0 a 18.446.744.073.709.551.615 normalmente 8 bytes (64 bits) en la memoria.

    Tiene el sinónimo unsigned long long int .

    float: Representa un número real de punto flotante de precisión simple en el rango +/- 3,4E-38 a 3,4E+38. Ocupa 4 bytes (32 bits) en memoria

    double: representa un número real de punto flotante de doble precisión en el rango +/- 1,7E-308 a 1,7E+308. Ocupa 8 bytes (64 bits) en memoria

    long double: representa un número real de punto flotante de doble precisión de al menos 8 bytes (64 bits). Dependiendo del tamaño de la memoria ocupada, el rango de valores válidos puede variar.

    vacío: tipo sin valor

Por lo tanto, todos los tipos de datos, excepto void, se pueden dividir en tres grupos: caracteres (char, wchar_t, char16_t, char32_t), enteros (short, int, long, long long) y tipos de números de punto flotante (float, double, long double).

Tipos de personajes

Los tipos utilizados para representar caracteres en la aplicación son char, wchar_t, char16_t y char32_t.

Definamos varias variables:

Char c="d"; wchar_t d="c";

Una variable char toma como valor un carácter entre comillas simples: char c ="d" . También puede asignar un número del rango especificado arriba en la lista: char c = 120. En este caso el valor de la variable c será el carácter que tiene el código 120 en la tabla de caracteres ASCII.

Vale la pena considerar que para enviar caracteres wchar_t a la consola, no se debe usar std::cout, sino el flujo std::wcout:

#incluir int main() ( char a = "H"; wchar_t b = "e"; std::wcout<< a << b << "\n"; return 0; }

En este caso, la secuencia std::wcout puede funcionar tanto con char como con wchar_t. Y la secuencia std::cout para la variable wchar_t generará su código numérico en lugar de un carácter.

El estándar C++ 11 agregó los tipos char16_t y char32_t, que están orientados al uso de Unicode. Sin embargo, los subprocesos para trabajar con estos tipos aún no se han implementado a nivel del sistema operativo. Por lo tanto, si necesita mostrar los valores de variables de estos tipos en la consola, debe convertir las variables a tipos char o wchar_t:

#incluir int main() ( char a = "H"; wchar_t b = "e"; char16_t c = "l"; char32_t d = "o"; std::cout<< a << (char)b << (char)c << (char)d << "\n"; return 0; }

En este caso, al generar, las variables van precedidas de una operación de conversión al tipo char - (char) , por lo que los valores de las variables b, cyd se convierten al tipo char y se pueden enviar a la consola usando la secuencia std::cout.

tipos de enteros

Los tipos de enteros se representan mediante los siguientes tipos: corto, corto sin signo, int, int sin signo, largo, largo sin signo, largo largo y largo sin signo:

Corto a = -10; corto sin firmar b= 10; int c = -30; int sin signo d = 60; largo e = -170; f larga sin firmar = 45; largo largo g = 89;

Tipos de números de coma flotante

Los tipos de números de coma flotante y fraccionarios se representan mediante flotante, doble y doble largo:

Flotante a = -10,45; doble b = 0,00105; doble c larga = 30,890045;

Tamaños de tipos de datos

La lista anterior muestra para cada tipo el tamaño que ocupa en la memoria. Sin embargo, vale la pena señalar que los desarrolladores de compiladores pueden elegir los límites de tamaño para los tipos de forma independiente, según las capacidades del hardware de la computadora. La norma establece sólo los valores mínimos que deben ser. Por ejemplo, para los tipos int y short el valor mínimo es 16 bits, para el tipo largo - 32 bits, para el tipo long double. En este caso, el tamaño del tipo largo no debe ser menor que el tamaño del tipo int, y el tamaño del tipo int no debe ser menor que el tamaño del tipo corto, y el tamaño del tipo doble largo debe ser mayor que el doble. Por ejemplo, el compilador g++ para Windows usa 12 bytes para dobles largos, y el compilador integrado en Visual Studio y que también se ejecuta en Windows usa 8 bytes para dobles largos. Es decir, incluso dentro de la misma plataforma, diferentes compiladores pueden tener diferentes enfoques para los tamaños de ciertos tipos de datos. Pero en general se utilizan los tamaños que se indican anteriormente al describir los tipos de datos.

Sin embargo, hay situaciones en las que es necesario saber exactamente el tamaño de un determinado tipo. Y para ello C++ tiene el operador sizeof(), que devuelve el tamaño de la memoria en bytes que ocupa la variable:

#incluir int main() ( número doble largo = 2; std::cout<< "sizeof(number) =" << sizeof(number); return 0; }

Salida de la consola al compilar en g++:

tamaño de (número) = 12

Al mismo tiempo, al definir variables, es importante comprender que el valor de una variable no debe ir más allá de los límites establecidos para su tipo. Por ejemplo:

Número corto sin signo = -65535;

El compilador de G++, al compilar un programa con esta línea, generará un error indicando que el valor -65535 no está dentro del rango de valores válidos para el tipo corto sin firmar y será truncado.

En Visual Studio, la compilación puede continuar sin errores, pero la variable numérica recibirá el valor 2, el resultado de convertir el número -65535 a un tipo corto sin signo. Es decir, nuevamente el resultado no será exactamente el esperado. El valor de una variable es simplemente una colección de bits en la memoria que se interpretan según un tipo específico. Y para diferentes tipos, el mismo conjunto de bits se puede interpretar de manera diferente. Por lo tanto, es importante considerar los rangos de valores para un tipo determinado al asignar un valor a una variable.

especificador automático

A veces puede resultar difícil determinar el tipo de expresión. Y de acuerdo con los últimos estándares, puede dejar que el compilador infiera el tipo del objeto en sí. Y para esto se utiliza el especificador automático. Además, si definimos una variable con el especificador auto, esta variable debe inicializarse con algún valor:

Número automático = 5;

Según el valor asignado, el compilador inferirá el tipo de variable. No se permiten variables no inicializadas con el especificador automático.

Los números de coma flotante utilizan el formato IEEE (Instituto de Ingenieros Eléctricos y Electrónicos). Los valores de precisión simple con tipo flotante tienen 4 bytes y constan de un bit de signo, un exponente binario de 8 bits con exceso de 127 y una mantisa de 23 bits. La mantisa representa un número entre 1,0 y 2,0. Dado que el bit de orden superior de la mantisa es siempre 1, no se almacena en el número. Esta representación proporciona un rango de aproximadamente 3,4E-38 a 3,4E+38 para el tipo flotante.

Puede declarar variables como flotantes o dobles, según las necesidades de su aplicación. Las principales diferencias entre los dos tipos son la importancia que pueden representar, el almacenamiento que requieren y su alcance. La siguiente tabla muestra la relación entre la importancia y los requisitos de almacenamiento.

Tipos de punto flotante

Tipo Dígitos significativos Número de bytes
flotar 6 - 7 4
doble 15 - 16 8

Las variables de coma flotante están representadas por una mantisa, que contiene el valor del número, y un exponente, que contiene el orden de magnitud del número.

La siguiente tabla muestra el número de bits asignados a la mantisa y el exponente para cada tipo de punto flotante. El bit más significativo de cualquier flotante o doble es siempre el bit de signo. Si es 1, el número se considera negativo; de lo contrario, se considera un número positivo.

Longitudes de exponentes y mantisas

Tipo Longitud del exponente Longitud de mantisa
flotar 8 bits 23 bits
doble 11 bits 52 bits

Debido a que los exponentes se almacenan en forma sin signo, el exponente está sesgado a la mitad de su valor posible. Para el tipo flotante, el sesgo es 127; para el tipo doble, es 1023. Puede calcular el valor del exponente real restando el valor del sesgo del valor del exponente.

La mantisa se almacena como una fracción binaria mayor o igual a 1 y menor que 2. Para los tipos float y double, hay un 1 inicial implícito en la mantisa en la posición de bit más significativa, por lo que las mantisas son en realidad 24 y 53. bits de longitud, respectivamente, aunque el bit más significativo nunca se almacena en la memoria.

En lugar del método de almacenamiento que acabamos de describir, el paquete de punto flotante puede almacenar números binarios de punto flotante como números desnormalizados. Los "números desnormalizados" son números de punto flotante distintos de cero con valores de exponente reservados en los que el bit más significativo de la mantisa es 0. Al utilizar el formato desnormalizado, el rango de un número de punto flotante se puede ampliar a costa de precisión. No se puede controlar si un número de punto flotante se representa en forma normalizada o desnormalizada; el paquete de punto flotante determina la representación. El paquete de punto flotante nunca utiliza una forma desnormalizada a menos que el exponente sea menor que el mínimo que se puede representar en una forma normalizada.

La siguiente tabla muestra los valores mínimos y máximos que puedes almacenar en variables de cada tipo de punto flotante. Los valores enumerados en esta tabla se aplican únicamente a números de punto flotante normalizados; Los números de punto flotante desnormalizados tienen un valor mínimo más pequeño. Tenga en cuenta que los números retenidos en 80 incógnita 87 registros siempre se representan en forma normalizada de 80 bits; Los números solo se pueden representar en forma desnormalizada cuando se almacenan en variables de punto flotante de 32 o 64 bits (variables de tipo float y tipo long).

Gama de tipos de punto flotante

Tipo Valor mínimo Valor máximo
flotar 1.175494351 E - 38 3.402823466E+38
doble 2.2250738585072014 E - 308 1.7976931348623158E+308

Si la precisión es menos preocupante que el almacenamiento, considere usar el tipo float para variables de punto flotante. Por el contrario, si la precisión es el criterio más importante, utilice el tipo doble.

Las variables de punto flotante se pueden promover a un tipo de mayor importancia (del tipo flotante al tipo doble). La promoción ocurre a menudo cuando se realiza aritmética en variables de punto flotante. Esta aritmética siempre se realiza con un grado de precisión tan alto como la variable con mayor grado de precisión. Por ejemplo, considere las siguientes declaraciones de tipo:

Flotador f_short; doble f_long; largo doble f_longer; f_corto = f_corto * f_largo;

En el ejemplo anterior, la variable f_short se promociona para que escriba double y se multiplica por f_long; luego, el resultado se redondea al tipo float antes de asignarlo a f_short.

En el siguiente ejemplo (que utiliza las declaraciones del ejemplo anterior), la aritmética se realiza con precisión flotante (32 bits) en las variables; Luego, el resultado se promociona para escribir doble:

F_más largo = f_corto * f_corto;

Ver también

Comentario

Nos encantaría escuchar tu opinión. Elige el tipo que te gustaría ofrecer.




Arriba