Forum: Mikrocontroller und Digitale Elektronik if Abfrage -> Verständniss Problem


von Jan H. (janiiix3)


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..

von c-hater (Gast)


Lesenswert?

|| sollte wohl && sein

von || vs && (Gast)


Lesenswert?

Jan H. schrieb:
> (eMode != INPUT) || (eMode != OUTPUT)

mit dem Aufruf

Jan H. schrieb:
> GPIOVerifyMode(INPUT)

ist die erste Bedingung (emode != INPUT) false. Dann wird die zweite 
Bedingung geprüfe (emode != OUTPUT), die ja richtig ist. Also ist die 
if-Bedingung erfült.

von || vs && (Gast)


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).

von Jan H. (janiiix3)


Lesenswert?

klingt plausibel!
Ich danke euch für die verständlichen Antworten.

Wünsche allen einen guten Rutsch!.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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
}

von EAF (Gast)


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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.