Forum: PC-Programmierung if Abfrage bei !=


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von hallo (Gast)


Lesenswert?

Hallo

Kann mich jemand bitte aufklären wo hier die Unterschiede sind bzw. was 
konkret macht das letzte Bsp. oder wie gehört es geändert damit if 
ausgeführt wird wenn a != 2 oder a != 4 ist.

if (a != 2) ist klar

if (!((a == 2) || (a == 4))) funktioniert richtig, wenn a == 2 oder 4 
ist, soll if nicht ausgeführt werden.

if (!((a != 2) || (a != 4)))

Danke!

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

wenns denn C o.ä. ist nimm statt || einfach |

|| ist ein binäres ODER
| ist ein logische ODER

: Bearbeitet durch User
von mh (Gast)


Lesenswert?

hallo schrieb:
> Hallo
>
> Kann mich jemand bitte aufklären wo hier die Unterschiede sind bzw. was
> konkret macht das letzte Bsp. oder wie gehört es geändert damit if
> ausgeführt wird wenn a != 2 oder a != 4 ist.
>
> if (a != 2) ist klar
>
> if (!((a == 2) || (a == 4))) funktioniert richtig, wenn a == 2 oder 4
> ist, soll if nicht ausgeführt werden.
>
> if (!((a != 2) || (a != 4)))
>
> Danke!

Das erste "!" entfernen? Das ist dann dein "wenn a != 2 oder a != 4 ist"

Dennis H. schrieb:
> wenns denn C o.ä. ist nimm statt || einfach |
>
> || ist ein binäres ODER
> | ist ein logische ODER
Ist das ernst gemeint oder trollst du?

von Tom (Gast)


Lesenswert?

Dann spiel mal (a != 2) || (a != 4) für die Zahlen 1 bis 5 durch und 
überleg warum das Blödsinn ist

von mh (Gast)


Lesenswert?

Tom schrieb:
> Dann spiel mal (a != 2) || (a != 4) für die Zahlen 1 bis 5 durch und
> überleg warum das Blödsinn ist

Auf wen oder was beziehst du dich?

von Sven B. (scummos)


Lesenswert?

Dennis H. schrieb:
> wenns denn C o.ä. ist nimm statt || einfach |
>
> || ist ein binäres ODER
> | ist ein logische ODER

Hä was? Erstens ist das für die meisten Compiler im genannten Fall egal, 
weil "a == 3" entweder 1 oder 0 ist, und zweitens ist | das bitweise 
oder, während || das logische oder ist.

von A. S. (Gast)


Lesenswert?

hallo schrieb:
> if ausgeführt wird wenn a != 2 oder a != 4 ist.

a ist immer ungleich 2 oder 4.

So eine Anfrage gibt keinen Sinn, vermutlich warnt sogar der Compiler.

a soll ungleich 2 UND ungleich 4 sein

Beitrag #6464916 wurde von einem Moderator gelöscht.
von && (Gast)


Lesenswert?

1
if ( (a != 2) && (a != 4)) )

von Manfred (Gast)


Lesenswert?

mh schrieb:
>> Dann spiel mal (a != 2) || (a != 4) für die Zahlen 1 bis 5 durch und
>> überleg warum das Blödsinn ist
>
> Auf wen oder was beziehst du dich?

Wenn ich nicht gerade einen Knoten im Kopf habe, ist die Abfrage per 
ODER Unfug und wird immer ausgeführt.

1 ist ungleich 2 und auch ungleich 4
2 ist ungleich 4
3 ist ungleich 2 und auch ungleich 4
4 ist ungleich 2
5 ist ungleich 2 und auch ungleich 4

Jetzt zeige mir eine Zahl, wo das nicht zutrifft!

Diese Abfrage würde nur mit UND irgendeine Funktion bekommen.

von mh (Gast)


Lesenswert?

Manfred schrieb:
> mh schrieb:
>>> Dann spiel mal (a != 2) || (a != 4) für die Zahlen 1 bis 5 durch und
>>> überleg warum das Blödsinn ist
>>
>> Auf wen oder was beziehst du dich?
>
> Wenn ich nicht gerade einen Knoten im Kopf habe, ist die Abfrage per
> [...]
> Diese Abfrage würde nur mit UND irgendeine Funktion bekommen.

Das ist mir klar, beantwortet aber nicht, auf wen oder was du dich 
bezogen hast.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Ups. und Sorry.

von was erlauben Strunz? (Gast)


Lesenswert?

1
   if (x != 2)
2
      goto SPAGHETTI;
3
4
   if (x != 4) {
5
   SPAGHETTI:
6
      puts("hier bin ich richtig");
7
   }

von wie die Flasche leer (Gast)


Lesenswert?

was erlauben Strunz? schrieb:
> if (x != 2)
>       goto SPAGHETTI;
>
>    if (x != 4) {
>    SPAGHETTI:
>       puts("hier bin ich richtig");
>    }

Nein ;-)

von PittyJ (Gast)


Lesenswert?

wie die Flasche leer schrieb:
> was erlauben Strunz? schrieb:
>> if (x != 2)
>>       goto SPAGHETTI;
>>
>>    if (x != 4) {
>>    SPAGHETTI:
>>       puts("hier bin ich richtig");
>>    }
>
> Nein ;-)

Doch !

Einmal im Jahr schreibe ich irgendwo im Code ein goto. Einfach weil ich 
es kann.

von Georg M. (g_m)


Lesenswert?

hallo schrieb:
> damit if ausgeführt wird wenn a != 2 oder a != 4 ist.
>
> wenn a == 2 oder 4 ist, soll if nicht ausgeführt werden.

https://de.wikipedia.org/wiki/De-morgansche_Gesetze

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.