Pourquoi est-ce un "si proche et pourtant si loin" & # 8221; si déclaration?

StackOverflow https://stackoverflow.com/questions/318068

  •  11-07-2019
  •  | 
  •  

Question

Je travaille sur une instruction If et je souhaite remplir deux conditions pour ignorer la boucle. Cela semblait facile au début, mais maintenant ... je ne sais pas. c'est mon dilemme ...

if((radButton1.checked == false)&&(radButton2.checked == false))
{
    txtTitle.Text = "go to work";
}

Le dilemme est "aller au travail". n'est pas exécuté si radButton1 est false et radButton2 est true. Ne devrait-il pas exiger que les deux conditions soient fausses pour ignorer la déclaration?

Était-ce utile?

La solution

Non, les deux doivent être faux pour exécuter l'instruction.

Autres conseils

Non, il faut que les deux conditions soient fausses pour exécuter la déclaration. Relire:

if ((radButton1.checked == false) && (radButton2.checked == false)) {
    txtTitle.Text = "Go to work";
}

En anglais: "Si radButton1.checked est false ET que radButton2.checked est false, définissez le txtTitle.Text à 'Aller au travail' ".

Si vous souhaitez ignorer la déclaration lorsque les deux conditions sont fausses, annulez votre logique, comme ceci:

if ((radButton1.checked == true) || (radButton2.checked == true)) {
    txtTitle.Text = "Go to work";
}

Ce texte traduit en anglais se lirait ainsi: "Si radButton1.checked est vrai OU radButton2.checked est vrai, définissez le texte sur 'Aller au travail'". Cela signifie que si une condition est vraie, elle exécutera l'instruction ou, si les deux sont fausses, elle sera ignorée.

Disons que j'ai deux variables nommées A et B

Si A et B ont ces valeurs

A     true    true    false   false
B     true    false   true    false

puis ces opérations retournent

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

Notez que les 3 derniers de la deuxième table sont les opposés logiques (c'est-à-dire qu'ils n'ont PAS été appliqués) des 3 premiers de la même table.

comparer à vrai (ou faux) est totalement inutile:

if(!((radButton1.checked == true)&&(radButton2.checked == true))) { ... }

devient

if( !(radButton1.checked && radButton2.checked) ) { ... }

ou également

if( !radButton1.checked || !radButton2.checked ) { ... }

Dans votre exemple, il exécutera UNIQUEMENT le code txtTitle.Text = "aller au travail" si les DEUX boutons sont faux. Donc, si l’on est vrai et l’autre qui est faux, la déclaration sera ignorée.

Non. Il faut que l'une de ces déclarations soit fausse pour être ignorée. Regardez votre si:

if (condition1 && condition2) {
    doSomething();
}

Donc, si condition1 OU condition2 n'est pas vraie, elle ne s'exécutera pas.

Je l’ai fait au travail. Je vois qu’ils ont tous deux besoin d’être faux pour exécuter la déclaration; pour cette déclaration, le moyen de satisfaire les deux conditions consiste à utiliser

if(!((radButton1.checked == true)&&(radButton2.checked == true)))
{
    ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top