logo

Operadores lógicos C

Los operadores lógicos en C se utilizan para combinar múltiples condiciones/restricciones. Los operadores lógicos devuelven 0 o 1, depende de si el resultado de la expresión es verdadero o falso. En la programación C para la toma de decisiones utilizamos operadores lógicos.

Disponemos de 3 operadores lógicos en el lenguaje C:

    Lógico Y ( && ) Lógico O ( || ) Lógico NO ( ! )

Tipos de operadores lógicos

1. Operador lógico AND ( && )

Si ambos operandos son distintos de cero, entonces la condición se vuelve verdadera. De lo contrario, el resultado tiene un valor de 0. El tipo de retorno del resultado es int. A continuación se muestra la tabla de verdad para el operador lógico AND.



X

Y X && Y

1

1

1

1

0

0

0

1

0

0

0

Bourne Again Shell

0

Sintaxis

(operand_1 && operand_2)>

Ejemplo

C




// C program for Logical> // AND Operator> #include> // Driver code> int> main()> {> >int> a = 10, b = 20;> >if> (a>0 && b> 0) {> >printf>(>'Both values are greater than 0 '>);> >}> >else> {> >printf>(>'Both values are less than 0 '>);> >}> >return> 0;> }>

>

>

Producción

Both values are greater than 0>

2. Operador lógico O ( || )

La condición se vuelve verdadera si cualquiera de ellos es distinto de cero. De lo contrario, devuelve falso, es decir, 0 como valor. A continuación se muestra la tabla de verdad para el operador lógico OR.

X Y X || Y

1

1

1

1

0

1

0

1

1

0

0

0

Sintaxis

generador de números aleatorios en c
(operand_1 || operand_2)>

Ejemplo

C




// C program for Logical> // OR Operator> #include> // Driver code> int> main()> {> >int> a = -1, b = 20;> >if> (a>0 || b> 0) {> >printf>(>'Any one of the given value is '> >'greater than 0 '>);> >}> >else> {> >printf>(>'Both values are less than 0 '>);> >}> >return> 0;> }>

>

>

Producción

Any one of the given value is greater than 0>

3. Operador lógico NOT (!)

Si la condición es verdadera, el operador lógico NOT la hará falsa y viceversa. A continuación se muestra la tabla de verdad para el operador lógico NOT.

X !X

0

1

1

0

Sintaxis

 ! (operand_1 && operand_2)>

Ejemplo

C


para matriz de cadenas java



// C program for Logical> // NOT Operator> #include> // Driver code> int> main()> {> >int> a = 10, b = 20;> >if> (!(a>0 && b> 0)) {> >// condition returned true but> >// logical NOT operator changed> >// it to false> >printf>(>'Both values are greater than 0 '>);> >}> >else> {> >printf>(>'Both values are less than 0 '>);> >}> >return> 0;> }>

>

>

Operadores lógicos de cortocircuito

Cuando el resultado puede determinarse evaluando la expresión lógica anterior sin evaluar los operandos adicionales, se conoce como cortocircuito.

El cortocircuito se puede ver en la ecuación que tiene más de un operador lógico. Pueden elegir Y, O o ambos.

1. Cortocircuito en el operador lógico AND

El operador lógico AND devuelve verdadero si y sólo si todos los operandos se evalúan como verdaderos. Si el primer operando es falso, los demás operandos no se evaluarán. Esto se debe a que incluso si los demás operandos se evalúan como verdaderos, la condición completa seguirá siendo falsa.

Ejemplo

C++




// C++ Program to illustrate short circuiting in Logical AND> #include> using> namespace> std;> // utility function to check positive> bool> is_positive(>int> number)> {> >if> (number>0)> >return> true>;> >else> >return> false>;> }> // utility function to check if the number is even> bool> is_even(>int> number)> {> >if> (number % 2 == 0)> >return> true>;> >else> >return> false>;> }> // driver code> int> main()> {> >int> x = 10;> >// Both conditions are evaluated> >if> (is_positive(x) && is_even(x)) {> >cout <<>'Both conditions are satisfied.'> << endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >int> y = -5;> >// The first condition is evaluated and found to be> >// false, so the second condition is not evaluated> >if> (is_positive(y) && is_even(y)) {> >cout <<>'Both conditions are satisfied.'> << endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >return> 0;> }>

>

>

Producción

Both conditions are satisfied. Conditions not satisfied.>

2. Cortocircuito en el operador lógico OR

El operador OR devuelve verdadero si al menos un operando se evalúa como verdadero. Si el primer operando es verdadero, los demás operandos no se evaluarán. Esto se debe a que incluso si los demás operandos se evalúan como falsos, toda la condición seguirá siendo verdadera.

Ejemplo

C++




// C++ program to illustrate the short circuiting in Logical> // OR> #include> using> namespace> std;> // utility function to check positive number> bool> is_positive(>int> number)> {> >if> (number>0)> >return> true>;> >else> >return> false>;> }> // utility function to check if the number is even> bool> is_even(>int> number)> {> >if> (number % 2 == 0)> >return> true>;> >else> >return> false>;> }> // driver code> int> main()> {> >int> x = 8;> >// The first condition is evaluated and found to be> >// true, so the second condition is not evaluated> >if> (is_positive(x) || is_even(x)) {> >cout <<>'At least one condition is satisfied.'> ><< endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >int> y = -5;> >// The first condition is evaluated and found to be> >// false, so the second condition is evaluated> >if> (is_positive(y) || is_even(y)) {> >cout <<>'At least one condition is satisfied.'> ><< endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >return> 0;> }>

>

>

Producción

At least one condition is satisfied. Conditions not satisfied.>

Preguntas frecuentes sobre operadores lógicos

P1. ¿Cuál es la precedencia de los operadores lógicos en programación?

Respuesta:

La precedencia de los operadores lógicos es: NO, Y, O. Sin embargo, siempre se recomienda utilizar paréntesis para hacer explícito el orden de evaluación y evitar confusiones.

P2. ¿Se pueden encadenar operadores lógicos?

Respuesta:

Sí, los operadores lógicos se pueden encadenar para crear condiciones complejas. Por ejemplo, podemos combinar múltiples operadores lógicos AND (&&) u lógicos OR (||) en una sola expresión para evaluar múltiples condiciones simultáneamente.

P3. ¿Cuál será el resultado del siguiente código?

C


convertir un número entero en una cadena



#include> void> main()> > >int> a = 1, b = 0, c = 5;> >int> d = a && b>

>

>

Respuesta:

6>

P4. ¿Cuál será el resultado del siguiente código?

C




#include> int> main()> {> >int> i = 1;> >if> (i++ && (i == 1))> >printf>(>'techcodeview.com '>);> >else> >printf>(>'Coding '>);> }>

>

>

Respuesta:

Coding>