Guten Abend, Ich frage mich was genau diese Zeile bedeutet... Poll = !!Pool; Was genau bewirken die beiden Ausrufezeichen?
> 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.
> Das bringt dann doch überhaupt nichts oder?
Doch, weils eben ∗keine∗ Identität ist. Einfach mal nachrechnen.
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?
Pool kann auch etwas anderes als 0 oder 1 sein. Etwas länger:
1 | Poll = (Pool != 0) ? 1 : 0; |
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.
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).
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.