¿Por qué es esta una declaración if "tan cercana pero tan lejos"?
Pregunta
Estoy trabajando en una instrucción If y quiero satisfacer dos condiciones para ignorar el ciclo. Esto parecía fácil al principio, pero ahora ... no lo sé. este es mi dilema ...
if((radButton1.checked == false)&&(radButton2.checked == false))
{
txtTitle.Text = "go to work";
}
El dilema es "ir a trabajar" no se ejecuta si radButton1 es falso y radButton2 es verdadero. ¿No debería requerir que ambas condiciones sean falsas para omitir la declaración?
Solución
No, requiere que ambos sean falsos para ejecutar la declaración.
Otros consejos
No, requiere que ambas condiciones sean falsas para ejecutar la declaración. Leer de nuevo:
if ((radButton1.checked == false) && (radButton2.checked == false)) {
txtTitle.Text = "Go to work";
}
En inglés: " Si radButton1.checked es falso Y radButton2.checked es falso, establezca el txtTitle.Text a 'Ir a trabajar' " ;.
Si desea omitir la declaración cuando ambas condiciones son falsas, entonces niegue su lógica, así:
if ((radButton1.checked == true) || (radButton2.checked == true)) {
txtTitle.Text = "Go to work";
}
Esto, traducido al inglés, leería: " Si radButton1.checked es verdadero O radButton2.checked es verdadero, entonces configure el texto como 'Ir a trabajar' " ;. Esto significa que si alguna condición es verdadera, ejecutará la declaración o, si ambas son falsas, la omitirá.
Digamos que tengo dos variables llamadas A
y B
Si A y B tienen estos valores
A true true false false
B true false true false
entonces estas operaciones regresan
AND true false false false
OR true true true false
XOR false true true false
NAND false true true true
NOR false false false true
XNOR true false false true
Tenga en cuenta que los 3 inferiores en la segunda tabla son los opuestos lógicos (es decir, NO se han aplicado) de los 3 superiores en la misma tabla.
comparar con verdadero (o falso) es completamente innecesario:
if(!((radButton1.checked == true)&&(radButton2.checked == true))) { ... }
se convierte
if( !(radButton1.checked && radButton2.checked) ) { ... }
o igualmente
if( !radButton1.checked || !radButton2.checked ) { ... }
En su ejemplo, SOLO ejecutará el código txtTitle.Text = " ir a trabajar "
si AMBOS botones son falsos. Entonces, si uno es verdadero y otro falso, se saltará la declaración.
No. Se requiere que una de esas declaraciones sea falsa para omitir. Mira tu if:
if (condition1 && condition2) {
doSomething();
}
Entonces, si la condición1 O la condición2 no es verdadera, entonces no se ejecutará.
Lo tengo para trabajar. Veo que ambos necesitan ser falsos para ejecutar la declaración, para esa declaración, la forma de satisfacer ambas condiciones es usando
if(!((radButton1.checked == true)&&(radButton2.checked == true)))
{
...
}