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

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.