Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 94 — #132<br />
✐<br />
Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />
<strong>C++</strong> introduce el concepto de constantes con nombre que es lo mismo que variable,<br />
excepto que su valor no puede cambiar. El modificador const le indica al<br />
compilador que el nombre repres<strong>en</strong>ta una constante. Cualquier tipo de datos predefinido<br />
o definido por el usuario, puede ser definido como const. Si se define algo<br />
como const y luego se int<strong>en</strong>ta modificar, el compilador g<strong>en</strong>erará un error.<br />
Se debe especificar el tipo de un const, de este modo:<br />
const int x = 10;<br />
En C y <strong>C++</strong> Estándar, se puede usar una constante <strong>en</strong> una lista de argum<strong>en</strong>tos,<br />
incluso si el argum<strong>en</strong>to que ocupa es un puntero o una refer<strong>en</strong>cia (p.e, se puede<br />
obt<strong>en</strong>er la dirección de una constante). Las constantes ti<strong>en</strong><strong>en</strong> ámbito, al igual que<br />
una variable ordinaria, de modo que se puede «esconder» una constante d<strong>en</strong>tro de<br />
una función y estar seguro de que ese nombre no afectará al resto del programa.<br />
const ha sido tomado de <strong>C++</strong> e incorporado al C Estándar pero un modo un<br />
poco distinto. En C, el compilador trata a const del mismo modo que a una variable<br />
que tuviera asociado una etiqueta que dice «No me cambies». Cuando se define un<br />
const <strong>en</strong> C, el compilador pide espacio para él, de modo que si se define más de un<br />
const con el mismo nombre <strong>en</strong> dos ficheros distintos (o se ubica la definición <strong>en</strong> un<br />
fichero de cabeceras), el <strong>en</strong>lazador g<strong>en</strong>erará m<strong>en</strong>sajes de error sobre del conflicto. El<br />
concepto de const <strong>en</strong> C es difer<strong>en</strong>te de su utilización <strong>en</strong> <strong>C++</strong> (<strong>en</strong> resum<strong>en</strong>, es más<br />
bonito <strong>en</strong> <strong>C++</strong>).<br />
Valores constantes<br />
En <strong>C++</strong>, una constante debe t<strong>en</strong>er siempre un valor inicial (En C, eso no es cierto).<br />
Los valores de las constantes para tipos predefinidos se expresan <strong>en</strong> decimal, octal,<br />
hexadecimal, o números con punto flotante (desgraciadam<strong>en</strong>te, no se consideró que<br />
los binarios fues<strong>en</strong> importantes), o como caracteres.<br />
A falta de cualquier otra pista, el compilador assume que el valor de una constante<br />
es un número decimal. Los números 47, 0 y 1101 se tratan como números decimales.<br />
Un valor constante con un cero al principio se trata como un número octal (base<br />
8). Los números con base 8 pued<strong>en</strong> cont<strong>en</strong>er únicam<strong>en</strong>te dígitos del 0 al 7; el compilador<br />
interpreta otros dígitos como un error. Un número octal legítimo es 017 (15 <strong>en</strong><br />
base 10).<br />
Un valor constante con 0x al principio se trata como un número hexadecimal<br />
(base 16). Los números con base 16 pued<strong>en</strong> cont<strong>en</strong>er dígitos del 0 al 9 y letras de la a<br />
a la f o A a F. Un número hexadecimal legítimo es 0x1fe (510 <strong>en</strong> base 10).<br />
Los números <strong>en</strong> punto flotante pued<strong>en</strong> cont<strong>en</strong>er comas decimales y pot<strong>en</strong>cias<br />
expon<strong>en</strong>ciales (repres<strong>en</strong>tadas mediante e, lo que significa «10 elevado a»). Tanto el<br />
punto decimal como la e son opcionales. Si se asigna una constante a una variable<br />
de punto flotante, el compilador tomará el valor de la constante y la convertirá a<br />
un número <strong>en</strong> punto flotante (este proceso es una forma de lo que se conoce como<br />
conversión implícita de tipo). De todos modos, es una bu<strong>en</strong>a idea el usar el punto<br />
decimal o una e para recordar al lector que está utilizando un número <strong>en</strong> punto<br />
flotante; algunos compiladores incluso necesitan esta pista.<br />
Algunos valores válidos para una constante <strong>en</strong> punto flotante son: 1e4, 1.0001,<br />
47.0, 0.0 y 1.159e-77. Se pued<strong>en</strong> añadir sufijos para forzar el tipo de número de punto<br />
flotante: f o F fuerza que sea float, L o l fuerza que sea un long double; de lo<br />
94<br />
✐<br />
✐<br />
✐<br />
✐