<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ist dieser Ausdruck definiert? (Auswertungsreihenfolge)]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin hier über folgendes Codefragment gestolpert und bin mir nicht sicher, ob es definiert ist oder nicht:</p>
<pre><code class="language-cpp">*p++ = *p * s;
</code></pre>
<p>p und s sind POD-Typen, es greifen also die Regeln für eingebaute Operatoren. Die Unsichterheit kommt nun dadurch, dass ich mich frage, ob das p++ auf der linken Seite vor dem *p auf der rechten Seite des Zuweisungsoperators ausgewertet werden kann (was in dem Falle undefiniert wäre). Im Standard im Kapitel 5 habe ich für den Assignment Operator aber auch nicht gefunden, dass auf der rechten Seite alle Seiteneffekte abgeschlossen sein müssen, bevor die Zuweisung ausgeführt wird (oder es steht noch an einer anderen Stelle und ich übersehe es).</p>
<p>Klar, ich kann es anders hinschreiben, dass es eindeutig ist - aber ich möchte diesen Ausdruck und das Warum verstehen (damit ich später dafür oder dagegen argumentieren kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/132807/ist-dieser-ausdruck-definiert-auswertungsreihenfolge</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 17:15:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/132807.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Jan 2006 10:06:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ist dieser Ausdruck definiert? (Auswertungsreihenfolge) on Fri, 13 Jan 2006 10:06:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin hier über folgendes Codefragment gestolpert und bin mir nicht sicher, ob es definiert ist oder nicht:</p>
<pre><code class="language-cpp">*p++ = *p * s;
</code></pre>
<p>p und s sind POD-Typen, es greifen also die Regeln für eingebaute Operatoren. Die Unsichterheit kommt nun dadurch, dass ich mich frage, ob das p++ auf der linken Seite vor dem *p auf der rechten Seite des Zuweisungsoperators ausgewertet werden kann (was in dem Falle undefiniert wäre). Im Standard im Kapitel 5 habe ich für den Assignment Operator aber auch nicht gefunden, dass auf der rechten Seite alle Seiteneffekte abgeschlossen sein müssen, bevor die Zuweisung ausgeführt wird (oder es steht noch an einer anderen Stelle und ich übersehe es).</p>
<p>Klar, ich kann es anders hinschreiben, dass es eindeutig ist - aber ich möchte diesen Ausdruck und das Warum verstehen (damit ich später dafür oder dagegen argumentieren kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965272</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to Ist dieser Ausdruck definiert? (Auswertungsreihenfolge) on Fri, 13 Jan 2006 10:13:16 GMT]]></title><description><![CDATA[<p>*setzt mal ein paar Klammern entsprechend der C-Operatorrangfolge*</p>
<pre><code class="language-cpp">(*(p++)) = ((*p) * s);
</code></pre>
<p>wenn wir davon ausgehen, daß p ein Pointer auf einen numerischen Typ und s eine numerische Variable ist, ist der Code legal - er dereferenziert p, multipliziert den Wert mit s und speichert das Ergebnis an der Position, auf die p zeigt, außerdem wird p eine Position im speicher weitergeschoben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965281</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:13:16 GMT</pubDate></item><item><title><![CDATA[Reply to Ist dieser Ausdruck definiert? (Auswertungsreihenfolge) on Fri, 13 Jan 2006 10:22:15 GMT]]></title><description><![CDATA[<p>Das beantwortet meine Frage aber leider nicht. Soweit war ich auch schon.</p>
<p>Stell es mal so um:</p>
<pre><code class="language-cpp">operator=( *p++, *p * s);
</code></pre>
<p>Jetzt wäre es in jedem Falle undefiniert, da die Auswertungsreihenfolge vom ersten und zweiten Argument nicht festgelegt ist.</p>
<p>Die spannende Frage für mich ist nur: Wird der Ausdruck rechts vom Zuweisungsoperator vollständig abgearbeitet und sind alle Seiteneffekte abgeschlossen, bevor der linke Ausdruck angeschaut wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965290</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:22:15 GMT</pubDate></item><item><title><![CDATA[Reply to Ist dieser Ausdruck definiert? (Auswertungsreihenfolge) on Fri, 13 Jan 2006 10:27:06 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Die spannende Frage für mich ist nur: Wird der Ausdruck rechts vom Zuweisungsoperator vollständig abgearbeitet und sind alle Seiteneffekte abgeschlossen, bevor der linke Ausdruck angeschaut wird?</p>
</blockquote>
<p>Nein, ein Zuweisungsoperator ist kein Sequenzpunkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965294</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:27:06 GMT</pubDate></item><item><title><![CDATA[Reply to Ist dieser Ausdruck definiert? (Auswertungsreihenfolge) on Fri, 13 Jan 2006 10:29:18 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Nein, ein Zuweisungsoperator ist kein Sequenzpunkt.</p>
</blockquote>
<p>Gut, genau das hatte ich nämlich auch im Kopf. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> (habe aber eine explizite Aussage im Standard vermisst bzw. nicht gefunden) Dann sollte es damit wohl beantwortet sein, danke.<br />
(Es sei denn, jemand hat noch Einsprüche)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965297</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:29:18 GMT</pubDate></item></channel></rss>