Forum: Compiler & IDEs Kleine kurze kurze Frage zum Syntax


von Peter W. (Gast)


Lesenswert?

Guten Abend,

Ich frage mich was genau diese Zeile bedeutet...

Poll = !!Pool;


Was genau bewirken die beiden Ausrufezeichen?

von g457 (Gast)


Lesenswert?

> Was genau bewirken die beiden Ausrufezeichen?

Jedes einzelne negiert logisch. Und bevor jetzt die Frage aufkommt: 
nein, hier ist das im Allgemeinen keine Identität.

von Peter W. (Gast)


Lesenswert?

Das bringt dann doch überhaupt nichts oder?

von g457 (Gast)


Lesenswert?

> Das bringt dann doch überhaupt nichts oder?

Doch, weils eben ∗keine∗ Identität ist. Einfach mal nachrechnen.

von Peter W. (Gast)


Lesenswert?

Ich stehe gerade total auf dem Schlauch...

Wenn ich jetzt davon ausgehe...  Das ich z.b Pool...  = 1 ist und ich es 
einmal negiere... !...  Wird die 1 zu einer 0... Negiere ich es jetzt 
noch einmal...!...  Wird es wieder zu einer 1 oder?

von DirkB (Gast)


Lesenswert?

Pool kann auch etwas anderes als 0 oder 1 sein.

Etwas länger:
1
Poll = (Pool != 0) ? 1 : 0;

von Peter W. (Gast)


Lesenswert?

Was war gleich noch mal das Fragezeichen? Kannst du mir mal erklären, 
was der Code jetzt genau bezweckt? Ich stecke leider noch in 
Kinderschuhen was C angeht.

von DirkB (Gast)


Lesenswert?

1
if (Pool != 0)
2
  Poll = 1;
3
else
4
  Poll = 0;

von Malte M. (mmalte)


Lesenswert?

1
p = !!p;
tut das gleiche wie
1
p = (p != 0) ? 1 : 0;
was wiederum das gleiche tut wie
1
if (p != 0)
2
    p = 1;
3
else
4
    p = 0;

Erklärung: In C steht jeder Zahlenwert ≠ 0 für „wahr“, nur 0 ist 
„falsch“. Durch Negieren (per !) wird aus jedem „wahr“-Wert also 0, aus 
einer 0 aber immer eine 1 (und nicht irgendeine Zahl).

von Sebastian V. (sebi_s)


Lesenswert?

Das ! ist eine logische Negation. Zu unterscheiden von der bitweisen 
Negation, die in C mit ~ erreicht wird. In C sind alle Werte die nicht 0 
sind "true", daher werden diese Werte durch die erste Negation zu 0. 
Daher werden bei zweimaliger logischer Negation alle Werte >=1 auf 1 
abgebildet und die 0 auf sich selbst.

von Rolf M. (rmagnus)


Lesenswert?

Peter W. schrieb:
> Was war gleich noch mal das Fragezeichen? Kannst du mir mal erklären,
> was der Code jetzt genau bezweckt?

Schmeiß dein C-Buch weg und ersetze es durch ein brauchbares. Das sind 
absolute Grundlagen.

> Ich stecke leider noch in Kinderschuhen was C angeht.

Umso wichtigier, daß du ein gutes Buch hast.

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.