Estos dos operadores a menudo se usan, y siempre están confundidos y grabados. . .
a () && b (): si verdadero se devuelve después de ejecutar a (), entonces b () se ejecuta y se devuelve el valor de B; Si False se devuelve después de ejecutar a (), toda la expresión devuelve el valor de a (), y b () no se ejecuta;
a () || b (): Si verdadero se devuelve después de ejecutar a (), toda la expresión devuelve el valor de a (), y b () no se ejecuta; Si se devuelve el falso después de ejecutar a (), b () se ejecuta y se devuelve el valor de b ();
&& La prioridad es mayor que ||
El código es el siguiente
alerta ((1 && 3 || 0) && 4); // resultado 4 ①
alerta (1 && 3 || 0 && 4); // resultado 3 ②
alerta (0 && 3 || 1 && 4); // resultado 4 ③
analizar
Instrucción ①: 1 && 3 return 3 => 3 || 0 return 3 => 3 && 4 return 4
Declaración ②: Primero ejecute 1 && 3 y return 3, luego ejecute 0 && 4 y regrese 0, y finalmente ejecute la comparación de resultados 3 || 0 y return 3
Declaración ③: Primero ejecute 0 && 3 y regrese 0, luego ejecute 1 && 4 y regrese 4, y finalmente ejecute la comparación de resultados 0 || 4 y regrese 4
Nota: Los enteros que no son cero son verdaderos, indefinidos, nulas y las cadenas vacías son falsas.