Forum: Mikrocontroller und Digitale Elektronik syntaxfrage


von max (Gast)


Lesenswert?

hi, ich sollte mal ganz schnell beantwortet haben, wie der genaue laut 
dieses syntaxes ist

if (!variable)

ist die Bedingung erfüllt wenn die variable ungleich "1" ist, wenn sie 
genau "0" ist oder etwas ganz anderes!?

Danke für die (wohl recht einfache) antwort!

von Timo (Gast)


Lesenswert?

wenn sie 0 ist

von max (Gast)


Lesenswert?

einzig und allein dann? - dachte eigentlich dass

if (!variable)

das gleiche wie

if (variable != 1)

ist!?

Deiner aussage nach ist es aber

if (variable == 0)
richtig?

von Arc N. (arc)


Lesenswert?

Aus dem Standard:
> The result of the logical negation operator ! is 0 if the value of its
> operand compares unequal to 0, 1 if the value of its operand compares equal
> to 0. The result has type int.
> The expression !E is equivalent to (0==E).

von Karl H. (kbuchegg)


Lesenswert?

vorweg:
 in C gilt: alles was 0 ist, ist logisch falsch
            alles was ungleich 0 ist, ist logisch wahr

  if( expr )
ist daher die vereinfachte Schreibweise für
  if( expr != 0 )

Der ! Operator ist die logische Negierung
er macht aus logisch falsch ein logisch wahr und umgekehrt

aus
  if( !expr )
wird daher
  if( !( expr != 0 ) )
wird die Negierung in die Klammer hineingezogen, ergibt sich
  if( expr == 0 )

von max (Gast)


Lesenswert?

okay, wunderbar - Danke!

würdest Du mir bitte die Quelle verraten wo Du das her hast? - da könnte 
ich vielleicht noch das eine oder andere dazu lernen!

Danke und Grüße

von max (Gast)


Lesenswert?

@EDIT-  mein letztes posting war an ARC NET gerichtet!

von Karl H. (kbuchegg)


Lesenswert?

Das, mein Herr, sollte eigentlich in jedem noch so grindigen
Lehrbuch über die Programmierung in C drinnen stehen. Das sind
sozusagen Grundlagen.

Konkret hat Arc Net ja auch dazugeschrieben, wo er das Zitat
her hat: AUs dem C-Standard, einem ISO-Dokument, welches
definiert, was C ist.

von Arc N. (arc)


Lesenswert?


von Der Hubert (Gast)


Lesenswert?

Dat ist nicht nur C bezogen, sondern dürfte auf alle Hochsprachen mit 
"IF" zutreffen ....

von Klaus F. (kfalser)


Lesenswert?

Nein, das ist wirklich C bezogen.

"Saubere" Hochsprachen wie z.B. Pascal erwarten bei if einen 
boolean-Wert, also true oder false.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Genau das tut C auch - "false" ist 0 und "true" ist alles, was nicht 0 
ist.

Wüsste nicht, was daran jetzt "unsauber" sein soll.

von Timo (Gast)


Lesenswert?

Das tut C nicht. C kennt keine eindeutigen Boolean Werte. Und die 
Aussage, dass "True" alles ist was nicht Null ist, zeigt das doch recht 
eindeutig.

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.