AVR-Studio - machen die Klammern hier einen Unterschied?

Gast
Dem AVR Studio ist es herzlich egal, was Du schreibst. Den vom AVR 
Studio aufgerufenen Compiler interessierts.
Aber wieviele zusätzliche Klammern Du um (b == 1) machst, ist auch dem 
egal.
ich bin aber nie sicher ob er wirklich Punkt vor Strichrechnung 
beherrscht, im Zweifel setze ich sicherheitshalber Klammern und ggffs. 
noch casts.

Sonst wunderte ich mich schon manchmal über "merkwürdige" Ergebnisse, 
vor allem bei gemischten Rechnungen mit long und int.
Moderator (Firma: Titel) Persönliche Seite
Himbeertorte schrieb:
> Ich glaube nicht, man kann sogar "if(a==0&&b==1)" schreiben.
Glück gehabt: && hat eine niedrigere Priorität als ==

Es ginge allerdings schief, wenn man schreiben würde
if (a&3 == b&3)
Da müssen zwingend noch Klammern rein:
if ((a&3) == (b&3))

Siehe 
https://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Priorit%C3%A4t

Ob man allerdings um irgendwelche Klammern zusätzlich Klammern 
macht, das ist dem Compiler schnurz...
Gast
Joachim B. schrieb:
> ich bin aber nie sicher ob er wirklich Punkt vor Strichrechnung
> beherrscht, im Zweifel setze ich sicherheitshalber Klammern und ggffs.
> noch casts.

Lerne die Regeln oder setze dir einen Link auf eine passende Web-Seite. 
Jede Schnörkelei, die du überflüssigerweise in den Code packst, musst du 
beim nächsten Mal, wenn du ihn anguckst, wieder lesen.

David schrieb:
> if ( (a==0) && ((b==1)) )

Wenn du schreibst
1
if ( a==0 && b==1 )
ist das genauso übersichtlich und du musst nicht die ganzen 
überflüssigen Zeichen durch dein Hirn wälzen.
wenn du in einem if eine zuweisung machst sind klammern interessant:

if(a=b)

gibt eine warning weil du ja versehentlich das 2. gleich vergessen haben 
könntest.

mit

if((a=b))

sagst du dem Compiler, dass du dort wirklich eine zuweisung und keinen 
vergleich machen wolltest.
Gast
Wolfgang A. schrieb:
> Wenn du schreibstif ( a==0 && b==1 )ist das genauso übersichtlich und du
> musst nicht die ganzen
> überflüssigen Zeichen durch dein Hirn wälzen.

Leider führt diese Schreibweise immer wieder zu unabsichtlichen 
Programmiererfehlern.
Deshalb fordern viele Kodierrichtlinien das Klammern um diese Ausdrucke.
(Stichwort MISRA)

Grüße, Adib.
--
Persönliche Seite
Marc S. schrieb:
> wenn du in einem if eine zuweisung machst sind klammern interessant:
>
> if(a=b)
>
> gibt eine warning weil du ja versehentlich das 2. gleich vergessen haben
> könntest.
>
> mit
>
> if((a=b))
>
> sagst du dem Compiler, dass du dort wirklich eine zuweisung und keinen
> vergleich machen wolltest.

Das ist kein Teil vom Standard, sondern reine Konvention. Durch die 
doppelten (syntaktisch überflüssigen) Klammern signalisiere ich als 
Programmierer anderen Programmierern und zukünftigen selbst(en), dass 
hier absichtlich eine Zuweisung stattfindet.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.