Cortocircuito en C++ y Linux

El cortocircuito es uno de los pasos de optimización del compilador, en este paso se evita el cálculo innecesario durante la evaluación de una expresión. La expresión se evalúa de izquierda a derecha. Funciona en ciertos casos cuando el valor de la expresión se puede calcular con certeza evaluando solo partes de la expresión.

Cortocircuito en C++
En C++, el cortocircuito se produce al evaluar los operadores lógicos ‘&&’ (AND) y ‘||'(OR). Al evaluar el operador ‘&&’ si el lado izquierdo de ‘&&’ da falso, entonces la expresión siempre dará falso independientemente del valor del lado derecho de ‘&&’, por lo que verifica el lado derecho de ‘&& ‘ no tiene sentido. Por lo tanto, en esta situación, el compilador evita la evaluación del lado derecho. De manera similar, en el caso de OR lógico ‘||’ operación cuando el lado izquierdo da ‘verdadero’, el resultado de la expresión siempre será verdadero independientemente del valor del lado derecho.

Cortocircuito usando el operador lógico AND(&&) y OR(||).

C++

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // Short circuiting
    // logical "||"(OR)
    int a = 1, b = 1, c = 1;
 
    // a and b are equal
    if (a == b || c++) {
        cout << "Value of 'c' will"
             << "  not increment due"
             << " to short-circuit"
             << endl;
    }
    else {
        cout << "Value of 'c' "
             << " is incremented as there"
             << " is no short-circuit"
             << endl;
    }
 
    // Short circuiting
    // logical "&&"(OR)
 
    if (a == b && c++) {
        cout << "Value of 'c' will"
             << " increment as there"
             << " is no short circuit"
             << endl;
    }
    else {
        cout << "Value of 'c' will"
             << " not increment due to short circuit"
             << endl;
    }
}
Producción:

Value of 'c' will  not increment due to short-circuit
Value of 'c' will increment as there is no short circuit

 

Cortocircuito en Linux 
En Linux, el cortocircuito tiene lugar mientras se evalúan ‘&&’ y ‘||’ operadores como C++.

Cortocircuito lógico AND(&&):
 

PHP

if [[ "$1" -gt 5 ]] && [[ "$1" -lt 10 ]]; then
    echo "This output will not be printed"
else
    echo "This output will be printed"
         " actually due to short circuit"    
fi
 
 
if [[ "$1" -lt 5 ]] && [[ "$1" -lt 10 ]]; then
    echo "This output will be printed"
         " as there will be no short circuit"
else
    echo "This output will be printed"
         " actually due to short circuit"    
fi

Producción:
 

Cortocircuito lógico OR(||):

PHP

if [[ "$1" -lt 5 ]] || [[ "$1" -gt 10 ]]; then
    echo "This output will be printed"
         " actually due to short circuit" 
else
    echo "This output will be printed"
         " as there will be no short circuit"  
fi
 
if [[ "$1" -gt 5 ]] || [[ "$1" -lt 10 ]]; then
    echo "This output will be printed"
         " as there will be no short circuit"
else
    echo "This output will be printed"
         " actually due to short circuit"    
fi

Producción:

Nota: el operador ‘&&’ se usa a menudo como reemplazo de la instrucción ‘if’.

Por ejemplo, para verificar la existencia de un archivo, puede usar cualquiera de los siguientes:

  • if [[ -e “$nombrearchivo” ]]; luego
    echo «existe»
    fi
  • [[ -e “$nombrearchivo” ]] && echo “existe”

En este caso, bash primero ejecuta la expresión a la izquierda de &&(y). Si esa expresión tiene un valor de retorno distinto de cero (es decir, falló), entonces no hay necesidad de evaluar el lado derecho de && porque ya se sabe que el estado de salida general es distinto de cero, ya que ambos lados tienen que devolver un éxito. indicador de un éxito lógico y de retorno.
 

Publicación traducida automáticamente

Artículo escrito por nandalamit1555 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *