Fehlender Operator ^^ in C

#1128873
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...
#1128884
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
Gast #1128900
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
Gast #1128922
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
Gast #1128935
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
Gast #1128944
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren