mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik syntaxfrage


Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn sie 0 ist

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 )

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@EDIT-  mein letztes posting war an ARC NET gerichtet!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Der Hubert (Gast)
Datum:

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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, das ist wirklich C bezogen.

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.