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; } }
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