7 Stimmen

Gibt es eine Teilmenge von C, die wie folgt geschrieben werden kann: i=+1?

Ich erinnere mich, ein Buch über die Standardprogrammiersprache C gelesen zu haben. Darin stand, dass man in einer Art C i=+1 schreiben kann, was i+=1 entspricht. Also i(Operator)=(Ausdruck) ist gleich i=(Operator)(Ausdruck). Ich habe diese Art von C noch nie gesehen. Gibt es jemanden, der das erklären kann?

Mit freundlichen Grüßen und Dank, Fan

22voto

Remo.D Punkte 15552

Das war die allererste Syntax für den +=-Operator in C. Ich glaube, sie war schon vor der ersten Ausgabe des K&R-Buches veraltet.

EDIT: Eine PDF-Datei mit dem C-Referenzhandbuch finden Sie hier: http://www.math.utah.edu/computing/compilers/c/Ritchie-CReferenceManual.pdf siehe 7.14.1

(Leider ist die von AnT veröffentlichte Version nicht mehr gültig)

13voto

AnT Punkte 300728

Das ist wahr. Diese Version von C wird CRM C genannt (CRM steht für "C Reference Manual" - ein Dokument, das von Dennis Ritchie geschrieben wurde). Es gibt viele seltsame Dinge in dieser Version von C.

Sie können das Dokument hier herunterladen http://cm.bell-labs.com/cm/cs/who/dmr/cman.pdf

8voto

Alok Singhal Punkte 87419

Kernighan und Ritchie's Die Programmiersprache C Die erste Ausgabe erklärt dies. Ich habe ein Zitat gefunden in diesen Beitrag auf comp.lang.c . Der relevante Teil des Zitats:

Da C eine sich entwickelnde Sprache ist, können bestimmte veraltete Konstruktionen in älteren Programmen zu finden sein. Obwohl die meisten Versionen des Compilers solche Anachronismen [-- Stand 1978--] unterstützen, werden sie letztendlich verschwinden, und nur ein Portabilitätsproblem zurücklassen.

Frühere Versionen von C verwendeten die Form =op anstelle von op= für die Zuordnung Operatoren. Dies führt zu Zweideutigkeiten, z. B. durch

x=-1

was tatsächlich die Zahl der x da die = und die - benachbart sind, aber die leicht dazu bestimmt sein könnten, die -1 a x .

Auch bei Wikipedia findet sich eine ähnliche Beschreibung. Von ihren Eintrag für C über die Unterschiede zwischen K&R C und "Old C":

zusammengesetzte Zuweisungsoperatoren der Form =op (wie zum Beispiel =- ) wurden geändert in die Form op= um die semantische Mehrdeutigkeit zu beseitigen, die durch Konstrukte wie i=-10 die wie folgt interpretiert wurde i =- 10 anstelle der möglicherweise beabsichtigten i = -10 .

1voto

kastermester Punkte 3008

Es würde auf jeden Fall Probleme geben, wenn Sie einer Variablen eine negative Zahl zuweisen wollen. Wovon hängt es dann ab, was Sie meinen? Abstände? (bäh!) Oder Klammern (doppelt bäh!). Hier sind einige Beispiele, die die Probleme verdeutlichen

i = -1; //Is this any different from the line below? Since when have spaces in these kind of cases mattered?
i =- 1; //If the suggested syntax existed, what would these two lines mean?

//The only thing left now (if we rule out making spaces matter) is to use parenthetis in my eyes, but...

i =(-1); //This is just ugly

Wie in den Kommentaren erwähnt, stellt das *-Symbol, das zur Dereferenzierung von Zeigern verwendet wird, genau das gleiche Problem dar wie das Minuszeichen.

0voto

Nikolai Fetissov Punkte 79627

Dies ist nicht C. In Standard-C ist das äquivalent zu i=1 . Könnte es sein, dass Sie auf der Suche sind nach i++ ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X