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 103 — #141<br />
✐<br />
3.7. Los operadores y su uso<br />
En g<strong>en</strong>eral, es mejor evitar el uso de la coma para cualquier otra cosa que no sea<br />
separar, ya que la g<strong>en</strong>te no está acostumbrada a verla como un operador.<br />
3.7.10. Trampas habituales cuando se usan operadores<br />
Como se ha ilustrado anteriorm<strong>en</strong>te, una de las trampas al usar operadores es<br />
tratar de trabajar sin paréntesis incluso cuando no se está seguro de la forma <strong>en</strong> la<br />
que se va a evaluar la expresión (consulte su propio manual de C para comprobar el<br />
ord<strong>en</strong> de la evaluación de las expresiones).<br />
Otro error extremadam<strong>en</strong>te común se ve a continuación:<br />
//: C03:Pitfall.cpp<br />
// Operator mistakes<br />
int main() {<br />
int a = 1, b = 1;<br />
while(a = b) {<br />
// ....<br />
}<br />
} ///:~<br />
La s<strong>en</strong>t<strong>en</strong>cia a = b siempre se va a evaluar como cierta cuando b es distinta de<br />
cero. La variable a obti<strong>en</strong>e el valor de b, y el valor de b también es producido por<br />
el operador =. En g<strong>en</strong>eral, lo que se pret<strong>en</strong>de es utilizar el operador de equival<strong>en</strong>cia<br />
(== d<strong>en</strong>tro de una s<strong>en</strong>t<strong>en</strong>cia condicional, no la asignación. Esto le ocurre a muchos<br />
programadores (de todos modos, algunos compiladores adviert<strong>en</strong> del problema, lo<br />
cual es una ayuda).<br />
Un problema similar es usar los operadores and y or de bits <strong>en</strong> lugar de sus equival<strong>en</strong>tes<br />
lógicos. Los operadores and y or de bits usan uno de los caracteres (& o |),<br />
mi<strong>en</strong>tras que los operadores lógicos utilizan dos (&& y ||). Al igual que con = y ==,<br />
es fácil escribir simplem<strong>en</strong>te un carácter <strong>en</strong> vez de dos. Una forma muy fácil de recordarlo<br />
es que «los bits son mas pequeños, de modo que no necesitan tantos caracteres<br />
<strong>en</strong> sus operadores».<br />
3.7.11. Operadores de moldeado<br />
La palabra molde(cast) se usa <strong>en</strong> el s<strong>en</strong>tido de "colocar d<strong>en</strong>tro de un molde". El<br />
compilador cambiará automáticam<strong>en</strong>te un tipo de dato a otro si ti<strong>en</strong>e s<strong>en</strong>tido. De<br />
hecho, si se asigna un valor <strong>en</strong>tero a una variable de punto flotante, el compilador<br />
llamará secretam<strong>en</strong>te a una función (o más probablem<strong>en</strong>te, insertará código) para<br />
convertir el int a un float. El molde permite hacer este tipo de conversión explicita, o<br />
forzarla cuando normalm<strong>en</strong>te no pasaría.<br />
Para realizar un molde, se debe situar el tipo deseado (incluy<strong>en</strong>do todos los modificadores)<br />
d<strong>en</strong>tro de paréntesis a la izquierda del valor. Este valor puede ser una<br />
variable, una constante, el valor producido por una expresión, o el valor devulto por<br />
una función. A continuación, un ejemplo:<br />
//: C03:SimpleCast.cpp<br />
int main() {<br />
int b = 200;<br />
103<br />
✐<br />
✐<br />
✐<br />
✐