Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 95 — #133<br />
✐<br />
3.7. Los operadores y su uso<br />
contrario, el número será un double.<br />
Las constantes de tipo char son caracteres <strong>en</strong>tre comillas simples, tales como: ’-<br />
A’, ’o’, ’’. Fíjese <strong>en</strong> que hay una gran difer<strong>en</strong>cia <strong>en</strong>tre el carácter ’o’ (ASCII 96)<br />
y el valor 0. Los caracteres especiales se repres<strong>en</strong>tan con la «barra invertida»: ’\n’<br />
(nueva línea), ’\t’ (tabulación), ’\\’ (barra invertida), ’\r’ (retorno de carro), ’-<br />
\"’ (comilla doble), ’\’’ (comilla simple), etc. Incluso se puede expresar constantes<br />
de tipo char <strong>en</strong> octal: ’\17’ o hexadecimal: ’\xff’.<br />
3.6.6. Volatile<br />
Mi<strong>en</strong>tras que el calificador const indica al compilador «Esto nunca cambia» (lo<br />
que permite al compilador realizar optimizaciones extra), el calificador volatile<br />
dice al compilador «Nunca se sabe cuando cambiará esto», y evita que el compilador<br />
realice optimizaciones basadas <strong>en</strong> la estabilidad de esa variable. Se utiliza esta<br />
palabra reservada cuando se lee algún valor fuera del control del código, algo así<br />
como un registro <strong>en</strong> un hardware de comunicación. Una variable volatile se lee<br />
siempre que su valor es requerido, incluso si se ha leído <strong>en</strong> la línea anterior.<br />
Un caso especial de espacio que está «fuera del control del código» es <strong>en</strong> un programa<br />
multi-hilo. Si está comprobando una bandera particular que puede ser modificada<br />
por otro hilo o proceso, esta bandera debería ser volatile de modo que el<br />
compilador no asuma que puede optimizar múltiples lecturas de la bandera.<br />
Fíjese <strong>en</strong> que volatile puede no t<strong>en</strong>er efecto cuando el compilador no está<br />
optimizando, pero puede prev<strong>en</strong>ir errores críticos cuando se comi<strong>en</strong>za a optimizar<br />
el código (que es cuando el compilador empezará a buscar lecturas redundantes).<br />
Las palabras reservadas const y volatile se verán con más detalle <strong>en</strong> un capítulo<br />
posterior.<br />
3.7. Los operadores y su uso<br />
Esta sección cubre todos los operadores de C y <strong>C++</strong>.<br />
Todos los operadores produc<strong>en</strong> un valor a partir de sus operandos. Esta operación<br />
se efectúa sin modificar los operandos, excepto con los operadores de asignación,<br />
increm<strong>en</strong>to y decrem<strong>en</strong>to. El hecho de modificar un operando se d<strong>en</strong>omina<br />
efecto colateral. El uso más común de los operadores que modifican sus operandos es<br />
producir el efecto colateral, pero se debería t<strong>en</strong>er <strong>en</strong> cu<strong>en</strong>ta que el valor producido<br />
está disponible para su uso al igual que el de los operadores sin efectos colaterales.<br />
3.7.1. Asignación<br />
La asignación se realiza mediante el operador =. Eso significa «Toma el valor<br />
de la derecha (a m<strong>en</strong>udo llamado rvalue) y cópialo <strong>en</strong> la variable de la izquierda<br />
(a m<strong>en</strong>udo llamado lvalue).» Un rvalue es cualquier constante, variable o expresión<br />
que pueda producir un valor, pero un lvalue debe ser una variable con un nombre<br />
distintivo y único (esto quiere decir que debe haber un espacio físico dónde guardar<br />
la información). De hecho, se puede asignar el valor de una constante a una variable<br />
(A = 4;), pero no se puede asignar nada a una constante - es decir, una constante<br />
no puede ser un lvalue (no se puede escribir 4 = A;).<br />
95<br />
✐<br />
✐<br />
✐<br />
✐