006
17.08.2002, 16:15 Uhr
~Xoc
Gast
|
Zitat: |
virtual postete Ich verstehe deine Argumentation nicht:
wenn es - wie du selbst sagst - kein L-Value ist - wie soll es dann auf der Linken seite der Zuweisung stehen dürfen?? auch das mit der Addresse: was meinst Du damit? - byte_array ist die Addresse eines char. Du castest es nach int*, womit es kein L-Value mehr ist und damit darf dem Teil nix mehr zugewiesen werden. Dass Du es vor der Zuweisung auch noch mit dem * dereferenzierst, macht die Sache auch nicht besser. [/i]
|
Hm, da befindest du dich im Irrtum. Beispiel:
Code: |
char s[10]; char *bla(){return s;}
int main(){ bla() = 'x'; // Verboten, weil bla() kein L-Value ist. *bla() = 'x'; // Erlaubt, obwohl bla() kein L-Value ist, [b]weil es nicht als L-Value benutzt wird![/b]
s = 'x' // Verboten, weil s kein L-Value ist. s[0] = 'x' // Erlaubt, obwohl s kein L-Value ist, [b]weil es nicht als L-Value benutzt wird![/b]
((int*)(byte_array + pos)) = 4711; // Verboten, weil ((int*)(byte_array + pos)) kein L-Value ist. *((int*)(byte_array + pos)) = 4711; // Erlaubt, obwohl ((int*)(byte_array + pos)) kein L-Value ist, [b]weil es nicht als L-Value benutzt wird![/b]
((int*)(byte_array + pos)) = 4711; // Verboten, weil ((int*)(byte_array + pos)) kein L-Value ist. ((int*)(byte_array + pos))[0] = 4711; // Erlaubt, obwohl ((int*)(byte_array + pos)) kein L-Value ist, [b]weil es nicht als L-Value benutzt wird![/b]
}
|
Alle Klarheiten beseitigt?
Zitat: |
virtual postete Die Tatsache, dass ich Dir auf Anhieb dei Architekturen nennen kann, wo so was nicht funktioniert (Motorola 68000, Alphaprozessoren [zumindest die ittige], die HP Prozessoren [habe Typnamen vergessen], ich glaube sogar Sun SPARC [bin mir nicht sicher]) lassen mir das Verhalten der 86er Intels eher als Ausnahme vorkommen.[/i]
|
Ich sagte doch schon, dass du mit den Architekturen Recht hast. Aber wer sowieso nur für den Intel schreibt, dem kann das egal sein.
Ach ja, man kann auch
*((int*)(byte_array)) = ...
schreiben. Wenn man 4 Byte Data Alignment aktiviert hat, führt das nie zu Problemen.
MfG Xoc |