You are on page 1of 8

pero sin decimales. int o long int. su tamaño no está definido.. pero sí sabemos que será mayor o igual que el de long int. depende en gran medida del compilador y del sistema operativo. A su vez.. Este tipo ocupa el siguiente puesto en cuanto a tamaño. Las variables enteras almacenan números enteros dentro de los límites de cada uno de sus tamaños. 16. y éste a su vez es menor o igual que el de un long int. sin embargo. Este tipo de variables es útil para almacenar números relativamente grandes.<identificador2>[. [signed|unsigned] long [int] <identificador>[. después de long int. Veremos cómo averiguar estos valores cuando estudiemos los operadores.<identificador2>[. int y long int como tipos enteros diferentes.<identificador3>]. No hay reglas fijas para saber el tamaño.].<identificador2>[. [signed|unsigned] short [int] <identificador>[. como el que se usa en Linux o el que usa el propio Dev-C++ (y otros entornos de desarrollo para Windows). Este tipo no pertenece al estandar ANSI. Sólo podemos estar seguros de que el tamaño de un short int es menor o igual que el de un int.. Tipo "float" o coma flotante: . esos tamaños dependen de la plataforma. Pero esa diferencia consiste sólo en el tamaño del valor máximo que pueden contener. 32..]... Tipo "long long": [signed|unsigned] long long [int] <identificador>[..]. y por lo tanto. Como en los otros casos.Tipo "int" o entero: [signed|unsigned] [short|long] int <identificador>[. está disponible en compiladores GNU.<identificador3>]..]. el mayor número que podemos almacenar en cada tipo entero: short int.. y del número de bits que use por palabra de memoria: 8. short int. claro. podemos considerar los tipos char. y en el tamaño que ocupan en memoria. por ejemplo el dinero que tienes en el banco. del compilador. o el número de lentejas que hay en un kilo de lentejas. A cierto nivel.. (salvo que seas Bill Gates).<identificador3>].<identificador2>[.<identificador3>].

e entre -9 y 9.99 x 109 y 0. Las variables de este tipo almacenan números en formato de coma flotante. más los signos.99.01 x 10-9 ó -0. para un tipo float típico de 32 bits. podemos ver cómo es posible almacenar números muy grandes o muy pequeños mediante dos enteros relativamente pequeños. que.00000000001 ó -0. como la producción mundial de trigo. Por ejemplo. Es decir. tenemos para la mantisa un valor entero. Estas variables son aptas para variables de tipo real.].99 x 109. esto es.float <identificador>[. contienen un valor de mantisa y otro de exponente. O para números muy grandes. como por ejemplo el cambio entre euros y dólares.<identificador3>]. Los números se interpretan como m x 10e. Por ejemplo. Pero el fuerte de estos números no es la precisión.. Y también números tan pequeños como 0. Este formato nos permite almacenar números entre -0. sino el orden de magnitud. contada en granos.01 x 10-9. y para el exponente un valor. m. Es decir. para entendernos. siete bits para el exponente y 23 para la mantisa..<identificador2>[. Por ejemplo. entre - 990000000 y 99000000. codifican números con decimales. usando potencias en base 10. entre -0. se usa un bit de signo para la mantisa y otro para el exponente. Esto sólo con tres dígitos decimales. como 0. Pero en un ordenador se usa aritmética binaria.99 y 0. Aunque el formato en que se almacenan estos números en un ordenador es binario. la siguiente cadena de operaciones no dará el resultado correcto: . es decir lo grande o pequeño que es el número que codifica.00000000001.

Te aseguro que float se usa muy a menudo. en este ejemplo. bool respuesta. Tipo "bool" o Booleano: bool <identificador>[. por ejemplo: ¿Posees carné de conducir?. Las variables de este tipo sólo pueden tomar dos valores true (verdadero) o false (falso). Los formatos en coma flotante sacrifican precisión en favor de tamaño. como programador. Pero hay millones de otras situaciones en que resultan muy útiles. bool continuar. En estos casos debemos acuñar una regla. true}. como sería de esperar. como veremos más adelante. para trabajar con temperaturas.]. a = a + 1. le encuentres. La respuesta es: aquella que tú. la precisión es suficiente para el margen de temperaturas que normalmente manejamos y para almacenar al menos tres decimales. qué utilidad tiene algo tan impreciso. Lo lógico sería no usar esos compiladores. Por ejemplo. Sirven para evaluar expresiones lógicas. y conseguir uno más actual. por ejemplo: qué mano usas para escribir. Tipo "double" o coma flotante de doble precisión: . Nota: En algunos compiladores de C++ antiguos no existe el tipo bool. Finalmente..float a = 12335545621232154. Puede que te preguntes (alguien me lo ha preguntado). enum bool {false=0. O para almacenar informaciones que sólo pueden tomar dos valores. Sin embargo el ejemplo si funcionaría con números más pequeños. Este tipo de variables se puede usar para almacenar respuestas.12335545621232154. Pero si esto no es posible.<identificador3>]. Esto hace que las variables de tipo float no sean muy adecuadas para todos los casos.<identificador2>[. podría ser diestro->true. "a" valdrá 0 y no 1.. a = a . zurdo->false. se puede simular este tipo a partir de un enumerado.

es nuestra responsabilidad aprender a usarlo como es debido. ¿por qué derrochar recursos? Por ejemplo. por lo tanto. Si tu problema no requiere la precisión de un double o long double. no existe un tamaño predefinido para cada tipo en coma flotante.<identificador2>[. ejemplo en el que sea útil usar uno de estos tipos. claro. Al igual que pasaba con los números enteros. En realidad esta sintaxis es errónea: no se pueden declarar variables de tipo void. Lo que sí sabemos es que el tamaño de double es mayor o igual que el de float y el de long double mayor o igual que el de double. pero también necesitemos gran precisión. Usaremos estas variables cuando trabajemos con números grandes. void es un tipo especial que indica la ausencia de tipo.[long] double <identificador>[. sino también en tamaño. al igual que float. pero usan una precisión mayor. para manejar un número en formato de long double se requiere el triple de memoria y el triple o más tiempo de procesador que para manejar un float.]. C++ nos dan un gran control sobre estas características. double 8 y long double 12..<identificador2>[. y mucho menos los recursos de nuestros clientes.<identificador3>].. Tipo "void" o sin tipo: void <identificador>[. en el compilador Dev-C++ float requiere 4 bytes. mantisa y exponente. Se usa para indicar el tipo del valor de retorno en funciones que no devuelven ningún valor.. ya que tal cosa no tiene sentido.<identificador3>].].. Como programadores estamos en la obligación de no desperdiciar nuestros recursos. para los que crearemos nuestros programas. Las variables de este tipo almacenan números en formato de coma flotante. de modo que no sólo se gana en precisión. El mayor espacio para almacenar el número se usa tanto para ampliar el rango de la mantisa como el del exponente. a costa de usar más memoria. y también para indicar la ausencia de parámetros en . Son aptos para variables de tipo real.

La segunda sintaxis nos permite añadir una lista de variables.. enum <identificador_de_enum> { <nombre> [= <valor>]. también opcional. estas funciones se llaman procedimientos. Las variables declaradas de este tipo sólo podrán tomar valores dentro del dominio definido en la declaración.funciones que no los requieren. . Tipo "enum" o enumerado: enum [<identificador_de_enum>] { <nombre> [= <valor>].]. el identificador de tipo es opcional.<identificador2>[. Vemos que hay dos sintaxis.} <identificador>[... Este tipo nos permite definir conjuntos de constantes enteras. Las funciones que no devuelven valores parecen una contradicción. llamados datos de tipo enumerado. (aunque este uso sólo es obligatorio en C. una función que se encargue de borrar la pantalla. .<identificador2>[.<identificador3>]. el mismo ejemplo de la función para borrar la pantalla no requiere ninguna entrada para poder realizar su cometido. hace su trabajo y regresa. . Se trata de una sintaxis más elaborada que las que hemos visto hasta ahora. y si lo usamos podremos declarar más variables del tipo enumerado en otras partes del programa: [enum] <identificador_de_enum> <identificador>[.<identificador2>[. no tienen nada que devolver.<identificador3>].]. pero no te asustes.. En lenguajes como Pascal. también se usará en la declaración de punteros genéricos. Lo mismo se aplica a las funciones sin parámetros de entrada. En la primera. Simplemente hacen su trabajo.]].. y opcional en C++). y no revuelven valores. (si es que te ha asustado esto) cuando te acostumbres a ver este tipo de cosas comprobarás que son fáciles de comprender. aunque esto lo veremos más adelante... Por ejemplo.} [<identificador>[....<identificador3>].

ventidos. veinte. etc. ventiuna. cinco. tercero}. Si decidimos no usar un identificador para el enumerado sólo podremos declarar variables en ese momento. cuatro.. quince. id2. Por ejemplo: enum tipohoras { una=1. seis. dos. diez. Como se ve en el ejemplo. tercero} id1. Varios identificadores pueden tomar el mismo valor. ya que no será posible referenciarlo: enum {primero=1. id2. doce. y no en otros lugares del programa. el primer elemento tomará el valor 0. tres. catorce. pero cada identificador sólo puede usarse en un tipo enumerado. los siguientes toman valores correlativos.De este modo podemos separar la definición del tipo enumerado de la declaración de variables de ese tipo: enum orden {primero=1. .. dieciocho. segundo. una y trece valen 1. enum orden id1. venticuatro = 0}. diecisiete. dieciseis. una vez se asigna un valor a un elemento de la lista. once. segundo. En este caso. O podemos hacer ambas cosas en la misma sentencia: definición y declaración: enum orden {primero=1. Y veinticuatro vale 0. dos y catorce valen 2. ventitres. siete. dos. nueve. diecinueve. id3. . Si no se asigna ningún valor. trece=1. tercero} uno. id3. segundo. ocho.

en el rango de valores válidos definidos en cada enum. para el compilador. Insisto en que internamente. se mostrará 12. enum. . y que hacen más comprensibles los programas. La lista de valores entre las llaves definen lo que se denomina el "dominio" del tipo enumerado. bool. long.Los nombres de las constantes pueden utilizarse en el programa. si tenemos una variable enumerada con el valor doce y la mostramos por pantalla. int. true y false. Un dominio es un conjunto de valores posibles para un dato. Del mismo modo. char. short. sólo son enteros. Deben considerarse como "etiquetas" que sustituyen a enteros. si el programa en un momento determinado nos pregunta la hora. unsigned. Una variable del tipo enumerado no podrá tomar jamás un valor fuera del dominio. float. void. double. signed. pero no pueden ser leídos ni escritos. no doce. Por ejemplo. no podremos responder doce y esperar que se almacene su valor correspondiente. Palabras reservadas usadas en este capítulo ^ Las palabras reservadas son palabras propias del lenguaje de programación. Están reservadas en el sentido de que no podemos usarlas como identificadores de variables o de funciones.