Diskussion:C-Programmierung: Operatoren

Aus Wikibooks
Zur Navigation springen Zur Suche springen

was mir fehlt und auffällt[Bearbeiten]

  • der tertiäre Operator (a?b:c;)
  • Es wird von noch etwas mehr Logik gesprochen aber die bitweise UND / ODER Operanden verwendet - also z.B. & statt && verwendet

--Bastie 07:24, 6. Okt 2005 (UTC)

Bedingungsoperator: erledigt.--Gnushi 08:59, 6. Jan 2006 (UTC)
  • Ist der Komplementäroperator nicht "!" ?

Assoziativität bei ( a() + (b() – c() )) korrekt?[Bearbeiten]

Kann mir vielleicht jemand erklären, warum ( a() + (b() – c() )) in eben dieser Reihenfolge ausgewertet wird? Auf der selben Seite ist doch ein Beispiel, wo (7 – 6) + 8 = 9 eben genau anders (also linksassoziativ) ausgewertet wird und beim obigen Beispiel kommen als Operatoren auch nur Plus und Minus vor? --143.205.140.154 15:54, 12. Nov. 2006 (CET)Reply[Beantworten]

Du hast recht. Das Beispiel muss von links nach rechts ausgewertet werden. Hab’s geändert. -- Michael2402 20:57, 15. Dez. 2009 (CET)Reply[Beantworten]

Frage zu Nebeneffekten[Bearbeiten]

Das Beispiel: i = 3; a = i + i++; ist für mich etwas unverständlich. Warum ist denn nicht definiert, wann i inkrementiert wird? Das Postfix ++ hat doch erstmal eine höhere Priorität als +, und da es sich um ein Postfix handelt, wird das Inkrement nach Verwendung von i gebildet. Demzufolge ist a = 6, und nach der Addition hat i den Wert 4.

Und warum ist denn das Inkrement "nur" ein Nebeneffekt? Ist es nicht der Haupteffekt von ++, dass das Inkrement gebildet wird? --85.183.159.25 12:24, 8. Sep. 2007 (CEST)Reply[Beantworten]

Im Zusammenhang mit Nebeneffekten gibt es in C das Konzept der Sequenzpunkte. Der Standard definiert das Nebeneffekte vor dem nächsten Sequenzpunkt 'verarbeitet' worden sein müssen. Sequenzpunkte gibt es am Ende einer Anweisung und einigen weiteren Stellen. Es ist allerding nicht definiert in welcher Reihenfolge Nebeneffekte abgearbeitet werden, noch dass sie nach allen Operationen verarbeitet werden. Die Compiler arbeiten sie jedoch meist in der Reihenfolge ab in der man es erwartet (z.B. von links nach rechts) - das ist jedoch nicht definiert. Eine praktisch kaum einschränkende Merkregel ist innerhalb einer Anweisung jede Variable nur einmal zu verändern. Dann muss man sich nicht um die Abarbeitungsreihenfolge von Nebeneffekten oder Funktionsaufrufen kümmern.

Der Shift-Operator[Bearbeiten]

Bitte um Abaenderung der Grafik.

Es git kein "leftschift" mit sch im Deutschen. Korrekturvorschlag: leftshift oder shift to left (SHL). -- LoCrux 21. Apr. 2008, 03:22:43 (Signatur nachgetragen.)

Ich habe es geändert. Vielen Dank für den Hinweis. :) -- heuler06 08:35, 21. Apr. 2008 (CEST)Reply[Beantworten]


Tippfehler im Bild[Bearbeiten]

Binärerer Operator -> Binärer Operator

fehlende Operatoren[Bearbeiten]

Es fehlen die Operatoren "!", "||" und "&&", sowie die Erklärung der Unterschiede zwischen "~" und "!", "|" und "||" sowie "&" und "&&". -- 91.96.223.44 07:49, 27. Feb. 2009 (CET)Reply[Beantworten]

präfixinkrement bevorzugt?[Bearbeiten]

Das habe ich nicht verstanden. Dass „schlechte und ältere Compiler“ da was ineffizientes draus machen ist doch eher ein Argument dafür, gute Compiler zu verwenden, als mein Programmierverhalten zu ändern, oder?! --80.64.176.28 17:42, 13. Okt. 2010 (CEST)Reply[Beantworten]