Guten Morgen!
Ist das Verhalten von
foo = foo++;
eigentlich implementierungsabhängig?
Cheers,
Wolfgang
PS: Nicht dass ich solchen Code verwenden wollte, ist nur aus reinem Interesse
Implementierungsabhängig?
Re: Implementierungsabhängig?
Hi,
ich vermute ja. Vielleicht ist es sogar vom Optimierungslevel abhängig. Allerdings bin ich kein Experte in solchen Grenzfragen.
Gruß,
hjb
ich vermute ja. Vielleicht ist es sogar vom Optimierungslevel abhängig. Allerdings bin ich kein Experte in solchen Grenzfragen.
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
Re: Implementierungsabhängig?
Das Verhalten des Konstrukt
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
int i = 2;
i = i++;
</font><hr></pre></blockquote>
ist <b>undefiniert</b> und somit eine Sache des Compilers darauf geeignet zu reagieren.
Je nach Compilern hat i danach den Wert 2, bei anderen 3 und bei einigen gar 4.
Wenn ein Verhalten undefiniert ist, kann alles passieren -- von einem korrekten Verhalten bis zur Auslösung des dritten Weltkriegs (um Thomas König aus dem Gedächtnis zu zitieren).
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
int i = 2;
i = i++;
</font><hr></pre></blockquote>
ist <b>undefiniert</b> und somit eine Sache des Compilers darauf geeignet zu reagieren.
Je nach Compilern hat i danach den Wert 2, bei anderen 3 und bei einigen gar 4.
Wenn ein Verhalten undefiniert ist, kann alles passieren -- von einem korrekten Verhalten bis zur Auslösung des dritten Weltkriegs (um Thomas König aus dem Gedächtnis zu zitieren).
Re: Implementierungsabhängig?
Besser noch: Es kann nicht nur alles passieren, es <i>darf</i> sogar alles passieren. Wenn der Compiler abstürzt oder Programm an dieser Stelle, ist der Programmierer schuld, nicht der Compilerschreiber!