Seite 1 von 1

[C/C++] Operator "++=" ?!

Verfasst: 29.09.2013 20:15
von Regenduft
Kennt irgendjemand den "++=" Operator in C/C++ ?

Ich portiere gerade "DrPetter's sfxr" von C nach PureBasic und bin auf folgenden seltsamen Code gestoßen:

Code: Alles auswählen

float* buffer;
float ssample;

*buffer++=ssample; // <-- Was soll "++=" bedeuten?
Dem Kontext nach würde ich darauf tippen, dass folgendes ein äquivalenter Ausdruck wäre...

Code: Alles auswählen

float* buffer;
float ssample;

*buffer=ssample;
*buffer+=sizeof(float);
...Allerdings habe ich keine Ahnung wie sich das begründen lässt (wie gasagt: ich habe nur aus dem Kontext geschlussfolgert).


Den kompletten Source-Code für Windows und Linux findet man in "sfxr-sdl-1.2.1.tar.gz" auf der bereits oben verlinkten Website.

Re: [C/C++] Operator "++=" ?!

Verfasst: 29.09.2013 20:25
von NicTheQuick
In C wäre das dann:

Code: Alles auswählen

float* buffer;
float ssample;

*buffer=ssample;
buffer++;
Und in PB:

Code: Alles auswählen

Define *buffer.Float, ssample.f

*buffer\f = ssample
*buffer + SizeOf(Float)

Re: [C/C++] Operator "++=" ?!

Verfasst: 29.09.2013 20:36
von Regenduft
Superflotte Antwort, Danke! :allright:

Jetzt ist der Groschen gefallen! Es war mir nicht klar, dass in C ein Pointer um die Größe seines Datentyps inkrementiert wird, anstatt einfach um 1 (wie bei "normalen" Variablen).

Re: [C/C++] Operator "++=" ?!

Verfasst: 29.09.2013 21:24
von NicTheQuick
Ich fänd's auch toll, wenn das in PB so wäre, aber ich denke das wird sich nicht mehr ändern. :wink:

Re: [C/C++] Operator "++=" ?!

Verfasst: 29.09.2013 21:47
von Regenduft
Mir würde schon genügen, wenn bei folgendem Code beide mal 2 ausgegeben würde anstatt 8 und 2. :wink:

Code: Alles auswählen

Define *a.Word
Define b.Word

Debug SizeOf(*a)
Debug SizeOf(b)

Re: [C/C++] Operator "++=" ?!

Verfasst: 29.09.2013 22:03
von ts-soft
Wie ? Pointer der grösse 2? 16-Bit :mrgreen:

Re: [C/C++] Operator "++=" ?!

Verfasst: 29.09.2013 22:17
von Regenduft
Habe wohl zu viel Retro-Zeug gecoded. :lol:

Anders ausgedrückt: Fände es Praktisch, wenn SizeOf() bei strukturierten Zeigern die Größe der Struktur statt die Größe des Pointers rückgeben würde.

Da nehme ich extra ".Word", damit es klar sein sollte, auf was ich hinaus will und schon springt ein TS mit einem klugen Spruch aus dem Busch... :evil: :wink: