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

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

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

Beitrag 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.
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag 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)
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

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

Beitrag 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).
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag 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:
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

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

Beitrag 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)
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

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

Beitrag von ts-soft »

Wie ? Pointer der grösse 2? 16-Bit :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

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

Beitrag 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:
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Antworten