[C con Clase] duda c++
Steven Davidson
srd4121 en njit.edu
Jue Ago 26 17:52:46 CEST 2010
Hola Mai,
On 8/26/2010 6:44 AM, maite mai wrote:
> buenos días,
>
> me acabo de suscirbir a las listas y no se si es aquí donde tengo que
> poner mis dudas, por favor si no es aquí indícame dónde, por favor.
>
Bienvenida a nuestra lista de correo-e y a este "mundillo" de la
programación en C++.
> Resulta q me estoy leyendo un curso de c++ que teneis en esta web, y
> en el capítulo 4, del último ejercicio, la última opción (e), no se
> porqué 1/(z-x-y) != 1 da error. Podríais explicarme cual es el
> motivo? No me ha quedado muy claro.
>
El ejercicio dice así:
Evaluar las siguientes expresiones. Siendo:
x = 10; y = 20; z = 30;
(x+y != z) && (1/(z-x-y) != 1)
o true
o false
o error
Evaluamos esta expresión viendo que se trata de una operación AND lógica
(&&). Por lo tanto, tenemos que evaluar la expresión de la izquierda
primero: (x+y != z). Como sabrás, esta expresión es falsa, porque
(10+20) != 30 es falsa.
Debido al cortocircuito de las operaciones lógicas AND, en C/C++, nos
detenemos en esta evaluación de la expresión izquierda, porque sabemos
la evluación total de (x+y != z) && (1/(z-x-y) != 1). En cuanto sepamos
que una parte es falsa, entonces sabemos que la operación AND es falsa.
He aquí la razón de imponer el cortocircuito.
Concluimos que no se evalúa (1/(z-x-y) != 1) en este caso, debido al
cortocircuito. Esto es un buen ejemplo del uso del cortocircuito, para
prevenir este tipo de errores.
Para más información sobre el cortocircuito, repasa el capítulo 4; el
enlace es: http://c.conclase.net/curso/index.php?cap=004c#Op_cortocircuito
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase