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)


Bewertung
-2 lesenswert
nicht 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


Bewertung
-4 lesenswert
nicht lesenswert
wenns denn C o.ä. ist nimm statt || einfach |

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

: Bearbeitet durch User
von mh (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
if ( (a != 2) && (a != 4)) )

von Manfred (Gast)


Bewertung
1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht lesenswert
Ups. und Sorry.

von was erlauben Strunz? (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
   if (x != 2)
      goto SPAGHETTI;

   if (x != 4) {
   SPAGHETTI:
      puts("hier bin ich richtig");
   }

von wie die Flasche leer (Gast)


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

Nein ;-)

von PittyJ (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.

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