<?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 das definiert? a = b[++i] + 2*b[++i];]]></title><description><![CDATA[<p>kwt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208986/ist-das-definiert-a-b-i-2-b-i</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 08:19:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208986.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Mar 2008 14:16:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Tue, 25 Mar 2008 14:16:46 GMT]]></title><description><![CDATA[<p>kwt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480074</guid><dc:creator><![CDATA[Definierer]]></dc:creator><pubDate>Tue, 25 Mar 2008 14:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Tue, 25 Mar 2008 14:23:41 GMT]]></title><description><![CDATA[<p>Welches von beiden 'i' zuerst erhöht wird ist nach dem Standard nicht definiert, da kein Sequenzpunkt vorliegt.<br />
Du solltest also solchen Code nicht erzeugen...<br />
Du kannst ihn aber dann auf 2 Zuweisungen aufteilen:</p>
<pre><code class="language-cpp">a = b[++i];
a += 2*b[++i];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1480080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480080</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 25 Mar 2008 14:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Tue, 25 Mar 2008 14:26:17 GMT]]></title><description><![CDATA[<p>Ist das nicht, wie beim || Operator?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480081</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 25 Mar 2008 14:26:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Tue, 25 Mar 2008 14:27:31 GMT]]></title><description><![CDATA[<p>ProgChild schrieb:</p>
<blockquote>
<p>Ist das nicht, wie beim || Operator?</p>
</blockquote>
<p>Nein. Bei || und &amp;&amp; ist die Reihenfolge definiert und bei obengenanntem Konstrukt nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480084</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 25 Mar 2008 14:27:31 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Tue, 25 Mar 2008 15:33:12 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>Nein. Bei || und &amp;&amp; ist die Reihenfolge definiert</p>
</blockquote>
<p>Allerdings auch nur beim builtin bool vs. bool. Bei einem op&amp;&amp; (oder op||) Marke Eigenbau ist die Reihenfolge auch nicht definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480133</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 25 Mar 2008 15:33:12 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Tue, 25 Mar 2008 15:56:23 GMT]]></title><description><![CDATA[<p>ja, richtig. ein guter grund um || oder &amp;&amp; nicht zu überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480151</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 25 Mar 2008 15:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Tue, 25 Mar 2008 18:59:12 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>ja, richtig. ein guter grund um || oder &amp;&amp; nicht zu überladen.</p>
</blockquote>
<p>it depends.</p>
<p>[in expression templates kann man dieses verhalten perfekt nachbilden, also ist es dort kein problem]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480242</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 25 Mar 2008 18:59:12 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Wed, 26 Mar 2008 06:01:53 GMT]]></title><description><![CDATA[<p>hmm ich dachte nach</p>
<p>b[++i] ist das i erhöht</p>
<p>2*b[++i] und wird dann hier nochmal erhöht</p>
<p>aus beiden termen dann die summe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480409</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 26 Mar 2008 06:01:53 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Wed, 26 Mar 2008 06:08:41 GMT]]></title><description><![CDATA[<p>Es ist dem Compiler freigestellt, in welcher Reihenfolge er die Argumente des operator+ auswertet. Er macht intern also sowas:</p>
<p>pseudocode</p>
<pre><code>//erste Möglichkeit, Auswertung links nach rechts
inc i
tmp1 = b[i]
inc i
tmp2 = 2*b[i]
a = tmp1+tmp2

//zweite Möglchkeit, Auswertung rechts nach links
inc i
tmp1 = 2*b[i]
inc i 
tmp2 = b[i]
a = tmp1+tmp2
</code></pre>
<p>Welche von beiden Möglichkeiten sich der Compiler aussucht ist nicht definiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480410</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 26 Mar 2008 06:08:41 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Wed, 26 Mar 2008 07:11:06 GMT]]></title><description><![CDATA[<p>In diesem Fall gibt es nicht nur zwei Möglichkeiten, sondern beliebig viele, da das Verhalten nicht unspezifiziert, sondern wegen der mehrfachen Modifikation von i sogar undefiniert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480417</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 26 Mar 2008 07:11:06 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Wed, 26 Mar 2008 08:26:28 GMT]]></title><description><![CDATA[<p>hmm ... ich ich dachte damals im studium gelernt zu haben, das die abarbeiten von operationen links nach rechts läuft, wo bei die prioritäten noch geregelt sind bspw. &amp; und * sowieso an erster stelle.. punkt vor stricht etc.</p>
<p>aber ist wohl compiler abhänging;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480439</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 26 Mar 2008 08:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Wed, 26 Mar 2008 08:38:55 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>hmm ... ich ich dachte damals im studium gelernt zu haben, das die abarbeiten von operationen links nach rechts läuft, wo bei die prioritäten noch geregelt sind bspw. &amp; und * sowieso an erster stelle.. punkt vor stricht etc.</p>
</blockquote>
<p>Du verwechselst hier was: bei a() + b() * c() wird <strong>natürlich</strong> zuerst das Ergebnis von b() mit dem von c() multipliziert, bevor das von a() dazu addiert wird. <strong>Aber</strong> dennoch könnte es sein, dass die Funktion a() vor der Funktion c() vor der Funktion b() aufgerufen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480444</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 26 Mar 2008 08:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to Ist das definiert? a = b[++i] + 2*b[++i]; on Wed, 26 Mar 2008 08:43:33 GMT]]></title><description><![CDATA[<p>***</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480445</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 26 Mar 2008 08:43:33 GMT</pubDate></item></channel></rss>