[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