Forum: Compiler & IDEs erklärung zu !


von C- Neuling (Gast)


Lesenswert?

ich habe mal eine frage an die experten, ich möchte eine Variable 
toggeln

var = !var; // schaltet ja auch immer zwischen 0 und 1 um,meine Frage 
ist
kann mir das !var erklären

vielen dank

von Klaus W. (mfgkw)


Lesenswert?

! negiert einen logischen Ausdruck.
Also wird das rechts davon als logischer Ausdruck untersucht.
Das bedeutet in C immer einen Test auf ungleich 0,

var=!var heißt also in etwa:
1
if ( var!=0 )
2
  var = 0;
3
else
4
  var = 1;

von diewodaso (Gast)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

! ist ein logisches NICHT

beliebige Zahl ungleich 0    ->  0
0 -> 1 (als Stellvertreter für eine Zahl ungleich 0)


Steht übrigens auch in jedem beliebigen C-Buch

von Klaus W. (mfgkw)


Lesenswert?

diewodaso schrieb:
> http://www.mikrocontroller.net/articles/Bitmanipulation
>
> mfg

Nein, das ist hier keine Bitmanipulation!

von Karl H. (kbuchegg)


Lesenswert?

Wenn dir das ! nicht geheuer ist (was es nicht sein sollte), dann kannst 
du das Toggeln auch ganz konventionell mittels

    var = 1 - var;

erreichen.
Wenn var gleich 1 ist, dann ergibt 1 - 1 eine glatte 0
Und wenn var dann 0 ist, dann berechnet sich 1 - 0 zu 1

So kann man dann zb auch zwischen 0 und 5 toggeln

   var = 5 - var;

von Ingo (Gast)


Lesenswert?

Man könnte auch einfach verexlusiv-odern.
1
var ^= var;





Grüße,
Ingo

von Klaus W. (mfgkw)


Lesenswert?

könnte man, aber das wäre nicht unbedingt dasselbe.

Nochmal: ! ist keine Bitmanipulation.

von Sam .. (sam1994)


Lesenswert?

Ingo schrieb:
> Man könnte auch einfach verexlusiv-odern.
> var ^= var;

eher
1
var ^= 1;

von Klaus W. (mfgkw)


Lesenswert?

Das wäre dann immer noch nicht dasselbe wie var=!var, aber schon näher 
dran :-)

von Rolf M. (rmagnus)


Lesenswert?

var = var ? 0 : 1;

von Klaus W. (mfgkw)


Lesenswert?

Wenn jetzt jemand fragt, was es mit ? auf sich hat, verweise ich auf 
mein erste Antwort und das Spiel geht von vorne los :-)

(Womit wir beim Thema Rekursion angelangt wären.)

von diewodaso (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> Nein, das ist hier keine Bitmanipulation!

Als wieder was gelernt

Dankeschön!

von weihnachtstroll (Gast)


Lesenswert?

Rolf Magnus schrieb:
> var = var ? 0 : 1;

Var oder nicht Var, das ist hier die Frage.

von diewodaso (Gast)


Lesenswert?

weihnachtstroll schrieb:
> Var oder nicht Var, das ist hier die Frage.

Der is GUT :-)

von Karl H. (kbuchegg)


Lesenswert?

diewodaso schrieb:
> weihnachtstroll schrieb:
>> Var oder nicht Var, das ist hier die Frage.
>
> Der is GUT :-)

:-)

was macht ein Computer, wenn er nicht einschlafen kann

  while( !sleeping )
    sheep++;

er zählt Schäfchen.

von avr (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> while( !sleeping )
>
>     sheep++;

Da wird der Watchdog zum Schäferhund ;)

avr

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.