¿Cómo se procesan a && by a || b en la programación en C si a y b son números enteros?

Gracias por A2A. No estoy de acuerdo con la respuesta proporcionada por Ankit arriba, él está mezclando && con &.

Permíteme decirte la forma más fácil de entenderlo, no solo esto, sino toda la programación. Según yo, la programación es un idioma, similar a cualquier otro idioma como hindi, inglés. Solo intenta que se encubran en los tuyos.

Considere este caso de && ( operador lógico AND ) , será cierto si ambos operandos son verdaderos. Tómelo en términos simples, si x e y , significa que se requieren ambos. Por el contrario, en el caso de OR ( en hindi, ya, significa uno de ellos ), denotado por || , el resultado sería verdadero si alguno de los operandos dados es verdadero.

A y B serán verdaderos solo si A = verdadero y B = verdadero, significa que ambos deben ser verdaderos. En todos los demás casos, será falso.

Si hay tres operandos, entonces A, B y C, el resultado será verdadero SOLO SI todos (A, B, C) son verdaderos. En todos los demás casos, el resultado será FALSO.

Del mismo modo, A O B será verdadero cuando CUALQUIERA del operando sea verdadero, por lo que va con A O B O C.

Ahora surge la pregunta, ¿qué es VERDADERO y qué es FALSO?

Esto depende de un idioma a otro. Si hay restricción de tipo como en Java, los valores booleanos verdadero y falso se consideran verdadero y falso respectivamente.

Generalmente hablando,

cero (0), en blanco (”), nulo, indefinido, falso => ​​FALSO

Todos los demás valores son => Verdadero

Operadores binarios: & y | son considerados como operador binario. En este primero, el operando se convierte en su valor binario, luego se realiza la operación correspondiente en los valores convertidos.

Volviendo a sus preguntas, mirando mis explicaciones anteriores: Eche un vistazo a mis comentarios.

#include

principal() {

int a = 5;
int b = 20;
int c;

// a es distinto de cero, muy cierto
// b es distinto de cero, muy cierto
// a && b => verdadero Y verdadero => verdadero
si (a && b) {
printf (“Línea 1 – La condición es verdadera \ n”);
}

// a es distinto de cero, muy cierto
// b es distinto de cero, muy cierto
// a || b => verdadero O verdadero => verdadero
// De hecho, || no comprueba los próximos operandos si el primero es verdadero, devuelve verdadero. Recuerda la regla “CUALQUIERA”
si (a || b) {
printf (“Línea 2 – La condición es verdadera \ n”);
}

/ * permite cambiar el valor de a y b * /
a = 0;
b = 10;

// a es cero, tan falso
// b es distinto de cero, muy cierto
// a && b => false AND true => false
// De hecho, AND no busca los siguientes operandos si el primero es falso y devuelve falso. Recuerda la regla “TODOS”
si (a && b) {
printf (“Línea 3 – La condición es verdadera \ n”);
}
más {
printf (“Línea 3 – La condición no es verdadera \ n”);
}

// a es cero, tan falso
// b es distinto de cero, muy cierto
// a && b => false AND true => false
//! (a && b) =>! (false) = verdadero
if (! (a && b)) {
printf (“Línea 4 – La condición es verdadera \ n”);
}

}

Las variables enteras distintas de cero se consideran verdaderas .

Las variables con valor cero se consideran falsas .

Ejemplo:

a = 10

b = 0

En este caso,

a será cierto (1)

b será falso (0)

a || b devolverá verdadero (1) . Tan igual como 1 || 0 ==> la respuesta será 1

a && b devolverá falso (0) . Igual que 1 && 0 ==> la respuesta será 0

Para obtener más información, consulte el enlace de mi sitio web,

Operadores lógicos en C

¡Gracias!

A2A.

Cuando use el operador &&, solo trate de entender esta cosa simple.

(condición 1) && (condición 2)

Cuando se evalúa cualquier condición, la evaluación es básicamente un int. Cualquier valor distinto de cero se considera “verdadero” y 0 se considera “falso”.

Por lo tanto, en a & b, siempre que ayb no sean cero, la condición es verdadera. Si a es falso, el resultado de && será falso, por lo que, para la optimización, ni vale la pena comprobar el b.

Para a || b, nuevamente, 0 es falso y no cero es verdadero. Si a resulta ser cierto, el resultado general de || va a ser cierto, así que no sirve de nada seguir comprobando.

Espero que esto sea suficiente 🙂

¡Buena suerte! Happy Coding 🙂

En C si establece el valor de la variable en 0, entonces es equivalente a false . Los valores distintos de 0 son equivalentes a true.

Veamos un ejemplo dado:

#include

principal() {

/ *
* el valor de a y b es mayor que 0, por lo que ambos son equivalentes a
* Valor booleano de verdadero.
* así en la condición dada 1: (a && b) es decir (verdadero && verdadero) devuelve verdadero.
* en la condición 2: (a || b) es decir (verdadero || verdadero) devuelve verdadero también.
* /
int a = 5;
int b = 20;
int c;

si (a && b) {
printf (“Línea 1 – La condición es verdadera \ n”);
}

si (a || b) {
printf (“Línea 2 – La condición es verdadera \ n”);
}

/ * aquí el valor de a = 0, es decir, falso y b = 10, es decir, verdadero * /
a = 0;
b = 10;

/ *
* en la condición siguiente (a && b), es decir (false && true) devuelve false y
* se ejecuta la instrucción en otra condición.
* /

si (a && b) {
printf (“Línea 3 – La condición es verdadera \ n”);
}
más {
printf (“Línea 3 – La condición no es verdadera \ n”);
}

/ *
*! signo es lógico operador NO, hace verdadero a falso y falso a
* cierto.
* entonces si verificamos la siguiente condición if (a && b) es decir (false && true)
* devuelve falso y! de falso, es decir! (falso) devuelve verdadero, por lo tanto, la línea 4 es
* mostrado.
* /
if (! (a && b)) {
printf (“Línea 4 – La condición es verdadera \ n”);
}

}

[1]

Notas al pie

[1] Usando verdadero y falso en C

Digamos, a = 10 yb = 5.

El equivalente binario de a es 1010 yb es 0101.

Cuando escribe a &&b, actuará como puerta AND , es decir

(1010 && 0101) = 0000

y la respuesta será 0. Significa que es FALSO, ya que Zero se considera falso.

Para a || b, actuará como puerta OR , es decir

(1010 || 0101) = 1111

y la respuesta será 15, ya que la respuesta no es cero, será VERDADERO.

si a y / o b son enteros, entonces el valor de a (o b) en expresión se considera verdadero si a (o b) es mayor o igual a cero. es decir, para el valor negativo entero se convierte en falso en la operación lógica. se llama conversión de tipo y depende del compilador.

Ejemplo:

a = -10, b = 15

a && b devuelve 0 (es decir, falso)

a || b devuelve 1 (es decir, verdadero)

C trata todos los enteros excepto 0 como Verdadero. Si no desea que las pruebas pasen, asigne 0 a cada a de a y b .

Tenga en cuenta que un int se considera falso solo si su valor es 0. Los números negativos siguen siendo verdaderos.

la lógica es simple

&& es operación AND que significa

si a = verdadero b = verdadero entonces salida = verdadero

si a = falso b = verdadero entonces salida = falso

si a = verdadero b = falso, entonces salida = falso

si ambos son falsos, la salida es falsa

en || O la lógica de operación es así

si a = verdadero b = verdadero entonces salida = verdadero

si a = falso b = verdadero entonces salida = verdadero

si a = verdadero b = falso entonces salida = verdadero

si ambos son falsos, la salida es falsa

en su caso, verdadero y falso se refiere a cero y cero, respectivamente

obtienes el resultado como verdadero siempre porque podrías estar ingresando el número distinto de cero

si ingresa a = 10 yb = 5, aquí ambos son distintos de cero y si realiza la operación && la salida será verdadera, pero si alguno de los números es cero, su salida

&& y || son operadores lógicos en c. Por ejemplo, considere a = 15 yb = 10.

a && b y a || b se evalúa a 1 (verdadero) en este caso.

Si fuera a = 0 yb = 15, a && b será 0 mientras que a || b será 1.

Para && si ambos operandos son distintos de cero, la condición se vuelve verdadera.

Para || Si alguno de los operandos no es cero, la condición se vuelve verdadera.

Espero que eso aclare tu duda.

Si A y B reciben los valores sugeridos, los valores de las expresiones del operador son lo que dice en el enlace.

¿Estás confundiendo A con a, o B con b?

Necesitará al menos un operando que se compare igual a cero para ver aparecer un valor distinto de 1.