<?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[++operator++ + als Ausdruck im paramater]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe code gefunden indem der ++ operator wie folgt verwendet wird:</p>
<pre><code class="language-cpp">int test (int para) {...};

int main(...)
{
   int idx = 0;
   for (i = 0; i &lt; 100; i++)
   {
       test (idx++);
   }
}
</code></pre>
<p>Ich hätte jetzt erwartet, dass zuerst i++ berechnet wird, da ja bei der Übergabe von parametern sichergestellt ist, dass alle Ausdrücke abgeabeitet sind. In der Realität ist es aber nicht so. Da wird zuerst der parameter übergeben und danach inkrementiert.</p>
<p>Meine Realität ist übrigens MS VC6</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157399/operator-als-ausdruck-im-paramater</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 02:33:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157399.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 25 Aug 2006 11:59:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ++operator++ + als Ausdruck im paramater on Fri, 25 Aug 2006 11:59:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe code gefunden indem der ++ operator wie folgt verwendet wird:</p>
<pre><code class="language-cpp">int test (int para) {...};

int main(...)
{
   int idx = 0;
   for (i = 0; i &lt; 100; i++)
   {
       test (idx++);
   }
}
</code></pre>
<p>Ich hätte jetzt erwartet, dass zuerst i++ berechnet wird, da ja bei der Übergabe von parametern sichergestellt ist, dass alle Ausdrücke abgeabeitet sind. In der Realität ist es aber nicht so. Da wird zuerst der parameter übergeben und danach inkrementiert.</p>
<p>Meine Realität ist übrigens MS VC6</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124361</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Fri, 25 Aug 2006 11:59:33 GMT</pubDate></item><item><title><![CDATA[Reply to ++operator++ + als Ausdruck im paramater on Fri, 25 Aug 2006 12:04:13 GMT]]></title><description><![CDATA[<p>mach dir am besten nochmal klar was der unterschied zwischen prefix/postfix ist</p>
<pre><code class="language-cpp">++idx;
//oder
idx++;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1124364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124364</guid><dc:creator><![CDATA[electric_juice]]></dc:creator><pubDate>Fri, 25 Aug 2006 12:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to ++operator++ + als Ausdruck im paramater on Fri, 25 Aug 2006 12:29:56 GMT]]></title><description><![CDATA[<p>templäd schrieb:</p>
<blockquote>
<p>Ich hätte jetzt erwartet, dass zuerst i++ berechnet wird, da ja bei der Übergabe von parametern sichergestellt ist, dass alle Ausdrücke abgeabeitet sind.</p>
</blockquote>
<p>Genau so ist es auch (unter der Annahme, dass du idx++ meinst, nicht i++, was deine Schleifenvariable wäre).</p>
<p>Das Ergebnis von idx++ ist aber nunmal der *alte* Wert von idx und dieser wird verwendet um deinen Parameter zu initialisieren.</p>
<p>Der Code ist also äquivalent zu:</p>
<pre><code class="language-cpp">int main(...)
{
   int idx = 0;
   for (i = 0; i &lt; 100; i++)
   {
       int oldIdx = idx;
       idx = idx + 1;
       test (oldIdx);
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1124388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124388</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 25 Aug 2006 12:29:56 GMT</pubDate></item><item><title><![CDATA[Reply to ++operator++ + als Ausdruck im paramater on Sat, 26 Aug 2006 12:31:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Vielleicht halten wir uns noch einmal vor Augen wo der unterschied zwischen der Postfix- und der Präfixversion des Inkrementoperators liegt.</p>
<p>Inkrementoperator Präfix (Bsp. ++i):<br />
1. Die Variablen wird inkrementiert (i += 1; )<br />
2. Die Variablen wird zurückgegeben (return i; )</p>
<p>Inkrementoperator Postfix (Bsp. i++):<br />
1. Eine lokale Kopie wird von der Variablen angelegt (int tmp = i; )<br />
2. Die Variable wird inkrementiert (i += 1; )<br />
3. Die lokale Kopie wird zurückgeliefert</p>
<p>Bei dem Fall f(i++) wird also der komplette Ausdruck i++ verarbeitet bevor die Funktion f aufgerufen wird. Hierbei wird wie oben beschrieben vorgegangen: Ein lokales Abbild der Variablen i wird erstellt (int tmp = i; ). Anschließend wird i inkrementiert (i += 1; ) und zuletzt wird die lokale Kopie zurückgegeben (return tmp; ).</p>
<p>Grüße Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124889</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 26 Aug 2006 12:31:39 GMT</pubDate></item></channel></rss>