<?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[cout - Reihenfolge der Auswertung]]></title><description><![CDATA[<p>Moin,</p>
<p>hab ein kleines Problem bzw stehe auffem Schlauch.</p>
<p>In allen Infoquellen lese ich, dass cout von links aus zusammenfasst.</p>
<p>Warum aber erzeugt dann die Anweisung (mit z.B. x = 2) cout &lt;&lt; x &lt;&lt; &quot; = &quot; &lt;&lt; x++; die Ausgabe 3 = 2 ?</p>
<p>Wenn doch von links ausgewertet wird müsste die Ausgabe doch eher 2 = 2 lauten oder im Falle von Präfix-Incr 2 = 3</p>
<p>Mir ist klar dass der ++Operator ne höhere Priorität hat, aber das dürfte doch keine Rolle spielen wenn beim Shiftoperator von links her zusammengefasst wird und somit das erste x schon im ostream gelandet ist bevor es zur Auswertung von x++ kommt.</p>
<p>Oder hält sich da VS2010Ultimate ned an den Standard?</p>
<p>thx &amp; cu<br />
pc-dau2</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296501/cout-reihenfolge-der-auswertung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 21:09:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296501.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Dec 2011 00:53:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cout - Reihenfolge der Auswertung on Tue, 06 Dec 2011 00:53:53 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>hab ein kleines Problem bzw stehe auffem Schlauch.</p>
<p>In allen Infoquellen lese ich, dass cout von links aus zusammenfasst.</p>
<p>Warum aber erzeugt dann die Anweisung (mit z.B. x = 2) cout &lt;&lt; x &lt;&lt; &quot; = &quot; &lt;&lt; x++; die Ausgabe 3 = 2 ?</p>
<p>Wenn doch von links ausgewertet wird müsste die Ausgabe doch eher 2 = 2 lauten oder im Falle von Präfix-Incr 2 = 3</p>
<p>Mir ist klar dass der ++Operator ne höhere Priorität hat, aber das dürfte doch keine Rolle spielen wenn beim Shiftoperator von links her zusammengefasst wird und somit das erste x schon im ostream gelandet ist bevor es zur Auswertung von x++ kommt.</p>
<p>Oder hält sich da VS2010Ultimate ned an den Standard?</p>
<p>thx &amp; cu<br />
pc-dau2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153651</guid><dc:creator><![CDATA[pc-dau2]]></dc:creator><pubDate>Tue, 06 Dec 2011 00:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to cout - Reihenfolge der Auswertung on Tue, 06 Dec 2011 00:56:15 GMT]]></title><description><![CDATA[<p>kurz: undefined behaviour.</p>
<p>lang: es gibt von links nach rechts aus, aber die auswertungsreihenfolge ist nicht festgelegt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153653</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 06 Dec 2011 00:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to cout - Reihenfolge der Auswertung on Tue, 06 Dec 2011 01:07:08 GMT]]></title><description><![CDATA[<p>Hui, Blitzanwort. Oder wurde die Frage so oft gestellt dass es dafür schon nen Antwort-Bot gibt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Also gilt die Auswertungsreihenfolge des Shiftoperators nur wenn keine zusätzlichen Anweisungen enthalten sind?</p>
<p>Wurde auf das Problem bei folgender Anweisung aufmerksam:</p>
<pre><code class="language-cpp">cout &lt;&lt; frac1 &lt;&lt; &quot; += &quot; &lt;&lt; frac2 &lt;&lt; &quot; = &quot; &lt;&lt; frac1.operator+=(frac2) &lt;&lt;endl;
</code></pre>
<p>frac1 enthält schon der Wert der +=Anweisung obwohl diese Anweisung ja erst am Schluss ausgeführt werden sollte.</p>
<p>Ist dann wohl selbes Problem wie im vereinfachten Beispiel.</p>
<p>Hab die Anweisung einfach in zwei Teile zerlegt und jetzt passts - ned schön, aber funzt. Man lernt halt nie aus.</p>
<p>Jedenfalls nochma danke für die schnelle Antwort. Hat mir ne schlaflose Nacht erspart! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153654</guid><dc:creator><![CDATA[pc-dau2]]></dc:creator><pubDate>Tue, 06 Dec 2011 01:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to cout - Reihenfolge der Auswertung on Tue, 06 Dec 2011 01:15:42 GMT]]></title><description><![CDATA[<p>Bis gestern habe ich auch noch gedacht, die die Priorität (Precedence) bestimmt die Auswertungsreihenfolge (order of evaluation). Das ist aber falsch. Letztendlich sagt die Priorität nur, welche Operanden ein Operator an sich bindet. Das Problem bei dir ist nun, dass x++ zuerst ausgewertet wird, und der side effect sofort eintritt (also an der Speicherstelle 3 steht) und danach das x ausgewertet wird, dann steht da eben 3=2. Genausogut könnte aber auch x zuerst ausgewertet werden und dann x++, dann steht da eben 2=2. Kurz und kanpp: Man kann nicht sagen, was das Ergebnis ist. Bei kommt 2=2 heraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153657</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 06 Dec 2011 01:15:42 GMT</pubDate></item><item><title><![CDATA[Reply to cout - Reihenfolge der Auswertung on Tue, 06 Dec 2011 01:22:06 GMT]]></title><description><![CDATA[<p>pc-dau2 schrieb:</p>
<blockquote>
<p>Hui, Blitzanwort. Oder wurde die Frage so oft gestellt dass es dafür schon nen Antwort-Bot gibt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Also gilt die Auswertungsreihenfolge des Shiftoperators nur wenn keine zusätzlichen Anweisungen enthalten sind?</p>
<p>Wurde auf das Problem bei folgender Anweisung aufmerksam:</p>
<pre><code class="language-cpp">cout &lt;&lt; frac1 &lt;&lt; &quot; += &quot; &lt;&lt; frac2 &lt;&lt; &quot; = &quot; &lt;&lt; frac1.operator+=(frac2) &lt;&lt;endl;
</code></pre>
<p>frac1 enthält schon der Wert der +=Anweisung obwohl diese Anweisung ja erst am Schluss ausgeführt werden sollte.</p>
<p>Ist dann wohl selbes Problem wie im vereinfachten Beispiel.</p>
<p>Hab die Anweisung einfach in zwei Teile zerlegt und jetzt passts - ned schön, aber funzt. Man lernt halt nie aus.</p>
</blockquote>
<p>Am besten fährt man wohl immer, wenn die Variable, auf die man eine Operation mit side effect anwendet, im kompletten Ausdruck nur 1x auftaucht. So wie ich dich verstanden habe, hast du das nun auch so gemacht, also das Ganze in 2 komplette Ausdrücke zerlegt.<br />
:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153659</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 06 Dec 2011 01:22:06 GMT</pubDate></item><item><title><![CDATA[Reply to cout - Reihenfolge der Auswertung on Tue, 06 Dec 2011 17:19:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">frac1.operator+=(frac2)
</code></pre>
<pre><code class="language-cpp">frac1 += frac2
</code></pre>
<p>ist zu kurz? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153989</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 06 Dec 2011 17:19:22 GMT</pubDate></item></channel></rss>