Un if realmente se lee cuando la condición es falsa?

Iniciado por z3nth10n, 28 Septiembre 2013, 21:12 PM

0 Miembros y 1 Visitante están viendo este tema.

ivancea96

Acabo de ver: los OR y los AND, en el momento que uno sea true o que uno sea false (respectivamente), ya no se evalúa nada más.

*Visual Basic*

Eleкtro

#21
Cita de: ABDERRAMAH en  8 Octubre 2013, 14:13 PM¿C# no dispone del equivalente a andalso y orelse?

Si:

&& = AndAlso
|| = OrElse


Cita de: ivancea96 en  8 Octubre 2013, 15:08 PM
Acabo de ver: los OR y los AND, en el momento que uno sea true o que uno sea false (respectivamente), ya no se evalúa nada más.

*Visual Basic*

Eso no es correcto, ocurre todo lo contratio a lo que has comentado,
para simular un OrElse y/o AndAlso en VB6 habría que agrupar expresiones:

(<Boolean Value 1> Or <Boolean Value 2>) And <Boolean Value 3>

Porfavor vuelvan a leer el comentario del compañero ABDERRAMAH sobre estos operadores.

Voy a poner un ejemplo para dejarlo todavía más claro si cabe sobre And y AndAlso en VB.NET:

Código (vbnet) [Seleccionar]
       Private str As String = Nothing

       ' Esto dará una excepción de referencia a objeto no establecida,
       ' Porque la segunda expresión se evalua de todas formas,
       ' y esta intentará leer la longitud de un objeto que es NADA.
       If str IsNot Nothing And str.Length <> 0 Then
           ' Blah blah blah
       End If

       ' Esto no dará ningún tipo de excepción,
       ' Porque la segunda expresión no se evaluará si la primera no se cumple.
       If str IsNot Nothing AndAlso str.Length <> 0 Then
           ' Blah blah blah
       End If


Saludos









ivancea96

Cita de: EleKtro H@cker en  8 Octubre 2013, 18:12 PM
Eso no es correcto, ocurre todo lo contratio a lo que has comentado
En cuanto la expresión va a dar verdadero seguro, o falso seguro, no evalua el resto. Esto viene de MSDN de Windows.

rir3760

And Operator (Visual Basic):
CitarIn a Boolean comparison, the And operator always evaluates both expressions, which could include making procedure calls. The AndAlso Operator (Visual Basic) performs short-circuiting, which means that if expression1 is False, then expression2 is not evaluated.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language