if Abfrage -> Verständniss Problem

OP #6926713
Lesenswert?

Moin,

ich stehe gerade dermaßen auf dem Schlauch.
1
GPIOVerifyMode(INPUT)

Wieso wird diese if Abfrage wahr?
1
GPIO_RETURN_CODE_t GPIOVerifyMode( GPIO_PIN_MODE_t eMode )
2
{
3
  if ( (eMode != INPUT) || (eMode != OUTPUT) || (eMode != ALTFUNC) || (eMode != ANALOG) )
4
  {
5
    return MODE_UNKNOWN;
6
  }
7

8
  return MODE_OK;
9
}

Mein logisches denken lässt langsam nach..
Gast #6926737
Lesenswert?

die if-Anweisung
1
if (a || b || c){
2
}
3
else{
4
}
prüft alle Ausdrucke a, b, c bis sie auf "true" triff. Dann wird 
abgebrochen und der if-Block wird ausgeführt.

Verknüpft man aber die einzelten Statements per &&
1
if (a && b && c){
2
}
3
else{
4
}

dann wird solange geprüft bis man auf "false" trifft (dann landet man im 
else-Teil) oder bis man  alles geprüfft hat (womit die if-Bedingung 
erfüllt wäre).
Moderator (Firma: Titel) Persönliche Seite #6926815
Lesenswert?

Jan H. schrieb:
> Wieso wird diese if Abfrage wahr?
Weil dort eigentlich steht:

if ( 0 || 1 || 1 || 1 )

Und das ist letztlich:

if ( 1)

Der Knackpunkt ist, dass Menschen sich mit logischen Verknüpfungen 
invertierter Logik eher schwer tun. Probiers mal mit Vergleichen auf 
"==":
1
 
2
GPIO_RETURN_CODE_t GPIOVerifyMode( GPIO_PIN_MODE_t eMode )
3
{
4
   if ((eMode == INPUT)||(eMode == OUTPUT)||(eMode == ALTFUNC)||(eMode == ANALOG))
5
      return MODE_OK;
6
   else
7
      return MODE_UNKNOWN;
8
}
Gast #6927323
Lesenswert?

Lothar M. schrieb:
> Der Knackpunkt ist, dass Menschen sich mit logischen Verknüpfungen
> invertierter Logik eher schwer tun.

Was einfach daran liegt, dass Intuition und vieles weitere in uralten 
Hirnregionen angesiedelt ist. Negierungen sind dagegen eher neueren 
Datums.
Darum funktionieren sie auch nicht bei den (Selbst)Suggestionstechniken.

So muss dann für ! und NOT, das Großhirn zur Hilfe genommen werden.

Lothar M. schrieb:
> Probiers mal mit Vergleichen auf "=="
Das funktioniert dagegen recht gut.

Also: Ja!
Beitrag #6927477 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren