Forum: Mikrocontroller und Digitale Elektronik Fehlender Operator ^^ in C


von Stephan (Gast)


Lesenswert?

Irgendwie vermisse ich den Operator ^^ (log. EXOR) in C. Wieso ist 
dieser nicht spezifiziert wie bei | und || oder & und && ? Wäre doch 
praktisch?

von H.Joachim S. (crazyhorse)


Lesenswert?

Wofür praktisch?

von Εrnst B. (ernst)


Lesenswert?

Stephan wrote:
> Irgendwie vermisse ich den Operator ^^ (log. EXOR) in C. Wieso ist
> dieser nicht spezifiziert wie bei | und || oder & und && ? Wäre doch
> praktisch?

Den gibt es schon, nur schreibt er sich "!=" :)

Dummerweise ist != nur auf echten bool-Variablen identisch mit ^^, und 
daher nur in neueren C-Stds oder C++ als sicherer Ersatz anwendbar...

von Peter D. (peda)


Lesenswert?

Stephan wrote:
> Irgendwie vermisse ich den Operator ^^ (log. EXOR) in C. Wieso ist
> dieser nicht spezifiziert wie bei | und || oder & und && ? Wäre doch
> praktisch?

Dafür kann man schreiben: !X ^ !Y

Der Grund, warum es dafür keinen extra Operator gibt, liegt darin, daß 
immer beide Ausdrücke ausgeführt werden müssen.

Bei || bzw. && kann ja der 2. Ausdruck übersprungen werden.


Peter

von 12er Dude (Gast)


Lesenswert?

Hallo Stephan,

Ernst hat es ja bereits angedeutet: Man muss zwischen logischer 
Verknüpfung und Bit-Manipulation unterscheiden.

Für Bit-Manipulation steht Dir "^" zur Verfügung. Aber was bedeutet die 
Antivalenz für boolsche (Logik) Werte?
Antwort: ungleich, also "!=". (mehr braucht man nicht)

Und das sollte auch mit "uraltem" C so sein (und ist auch so).

tschü Dude

von 12er Dude (Gast)


Lesenswert?

Hallo Peter,

>Bei || bzw. && kann ja der 2. Ausdruck übersprungen werden.

Wenn bei "||" der erste Ausdruck (Operand) "FALSE" ist kann der zweite 
übersprungen werden?

Hmmmmh ... , das erkläre doch bitte einmal detaillierter ;)

tschü Dude

von Stefan E. (sternst)


Lesenswert?

Von "false" stand in seinem Post nichts.
Er kann übersprungen werden, wenn der erste Operand true ist.

von 12er Dude (Gast)


Lesenswert?

Hallo Stefan,

schon recht, aber der Unterschied liegt einzig in bitweiser und 
logischer Verknüpfung. Das gewünschte "^^" und das reale "!=" sind 
gleichwertig; und das dürfte der Grund sein.

tschü Dude

von Stefan E. (sternst)


Lesenswert?

12er Dude wrote:
> Das gewünschte "^^" und das reale "!=" sind
> gleichwertig;

Nein, sind sie nicht.

1 ^^ 2 -> false
1 != 2 -> true

Deshalb die Ergänzung von Ernst Bachmann bezüglich der "echten" 
bool-Variablen.

von 12er Dude (Gast)


Lesenswert?

Hallo Stefan E.,

ups, jau, haste natürlich recht!

Die Operatoren "==" und "!=" werten bitweise aus (sonst wäre der 
Zahlenvergleich ja nicht möglich). Ist wohl schon zu spät oder früh 
heute.

tschü Dude

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.