<?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[Parameterweitergabe und Erhöhung]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe wieder ein winziges Problem.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
int a=0, b=1;
int f1(int a);
int f2(int b);

int main()
{
      int count;
      for (count=1;count&lt;=5;++count)
           {
               b+=f1(a+1)+1; 
               cout &lt;&lt; b &lt;&lt; &quot; &quot;;
           }
}

int f1(int a)
   {
      b = f2(a+1)+1;
      return (b);
   }

int f2(int a)
   {
      return (b+a);
   }
</code></pre>
<p>Ausgabe :</p>
<pre><code>9 25 57 121 249
</code></pre>
<p>Problem:</p>
<pre><code>b+=f1(a+1)+1; 
          cout &lt;&lt; b &lt;&lt; &quot; &quot;;
</code></pre>
<p>Parameter a wird an die Funktion f1 übergeben und um 1 erhöht richtig ?</p>
<pre><code>int f1(int a)
   {
      b = f2(a+1)+1;
      return (b);
   }
</code></pre>
<p>f1 erwartet ein Parameter und erhält das vorher um 1 erhöhte a. Nun gibt er das weiter an f2 und wird noch einmal erhöht um 1.</p>
<pre><code>int f2(int a)
   {
      return (b+a);
   }
</code></pre>
<p>f2 erwartet und empfängt das a und addiert es mit b. Die Variable b ist 1 somit gibt f2 an f1 beim ersten durchlauf 3 weiter.</p>
<p>Nach dem ersten kompletten Durchlauf der Schleife hat b den Wert 9. Was ich jetzt wissen muss, beim zweiten (dritten..usw) Druchlauf welchen Wert haben a und b in f1 und f2 ? Die sind ja nicht immer gleich. Behalten diese die Werte vom letzten Durchlauf ?</p>
<p>Oder anders formuliert:</p>
<p>Ausgabe :</p>
<pre><code>9 25 57 121 249
</code></pre>
<p>woher kommt genau die Differenz zwischen der ersten Ausgabe 9 und 25 ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317988/parameterweitergabe-und-erhöhung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 22:33:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317988.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Jun 2013 02:25:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parameterweitergabe und Erhöhung on Thu, 27 Jun 2013 02:25:52 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe wieder ein winziges Problem.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
int a=0, b=1;
int f1(int a);
int f2(int b);

int main()
{
      int count;
      for (count=1;count&lt;=5;++count)
           {
               b+=f1(a+1)+1; 
               cout &lt;&lt; b &lt;&lt; &quot; &quot;;
           }
}

int f1(int a)
   {
      b = f2(a+1)+1;
      return (b);
   }

int f2(int a)
   {
      return (b+a);
   }
</code></pre>
<p>Ausgabe :</p>
<pre><code>9 25 57 121 249
</code></pre>
<p>Problem:</p>
<pre><code>b+=f1(a+1)+1; 
          cout &lt;&lt; b &lt;&lt; &quot; &quot;;
</code></pre>
<p>Parameter a wird an die Funktion f1 übergeben und um 1 erhöht richtig ?</p>
<pre><code>int f1(int a)
   {
      b = f2(a+1)+1;
      return (b);
   }
</code></pre>
<p>f1 erwartet ein Parameter und erhält das vorher um 1 erhöhte a. Nun gibt er das weiter an f2 und wird noch einmal erhöht um 1.</p>
<pre><code>int f2(int a)
   {
      return (b+a);
   }
</code></pre>
<p>f2 erwartet und empfängt das a und addiert es mit b. Die Variable b ist 1 somit gibt f2 an f1 beim ersten durchlauf 3 weiter.</p>
<p>Nach dem ersten kompletten Durchlauf der Schleife hat b den Wert 9. Was ich jetzt wissen muss, beim zweiten (dritten..usw) Druchlauf welchen Wert haben a und b in f1 und f2 ? Die sind ja nicht immer gleich. Behalten diese die Werte vom letzten Durchlauf ?</p>
<p>Oder anders formuliert:</p>
<p>Ausgabe :</p>
<pre><code>9 25 57 121 249
</code></pre>
<p>woher kommt genau die Differenz zwischen der ersten Ausgabe 9 und 25 ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334700</guid><dc:creator><![CDATA[coc1948]]></dc:creator><pubDate>Thu, 27 Jun 2013 02:25:52 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterweitergabe und Erhöhung on Thu, 27 Jun 2013 05:50:50 GMT]]></title><description><![CDATA[<p>vatan89 schrieb:</p>
<blockquote>
<p>Problem:</p>
<pre><code>b+=f1(a+1)+1; 
          cout &lt;&lt; b &lt;&lt; &quot; &quot;;
</code></pre>
<p>Parameter a wird an die Funktion f1 übergeben und um 1 erhöht richtig ?</p>
</blockquote>
<p>Richtig, das Ergebnis der Addition wird übergeben.</p>
<p>vatan89 schrieb:</p>
<blockquote>
<p>Ausgabe :</p>
<pre><code>9 25 57 121 249
</code></pre>
<p>woher kommt genau die Differenz zwischen der ersten Ausgabe 9 und 25 ?</p>
</blockquote>
<p>In <strong>f1</strong> wird <strong>b</strong> bereits verändert, anschließend zurückgegeben und in der Schleife wieder mit sich und 1 addiert.<br />
Lösen wir <strong>f2</strong> mal auf:</p>
<pre><code>int f1(int a){
      b += 3;
      return b;
}
</code></pre>
<p>Da <strong>a</strong> sich nicht ändert, kann es durch 2 ersetzt werden.<br />
Und nun <strong>f1</strong> in der Schleife:</p>
<pre><code>b+=3;
            b+=b+1;
</code></pre>
<p>Jetzt rechne mal nach.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int b=1;

int main(){
      for (int count=1;count&lt;=5;++count){
            b+=3; 
            b+=b+1; 
            cout &lt;&lt; b &lt;&lt; &quot; &quot;;
      }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2334702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334702</guid><dc:creator><![CDATA[Youka]]></dc:creator><pubDate>Thu, 27 Jun 2013 05:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterweitergabe und Erhöhung on Thu, 27 Jun 2013 12:01:55 GMT]]></title><description><![CDATA[<p>Ok, ich glaube ich habe es verstanden, zumindest komme ich auf die weiteren zahlen der Ausgabe.</p>
<p>Aber weshalb wird aus</p>
<pre><code>int f1(int a)
   {
      b = f2(a+1)+1;
      return (b);
   }
</code></pre>
<p>dieser Ausdruck</p>
<pre><code>int f1(int a){
      b += 3;
      return b;
</code></pre>
<p>Wie bist du darauf gekommen, f1 in dieser Form zu ändern.</p>
<p>weil in meiner Überlegung bin ich davon ausgengangen, dass a bei der weitergabe aus der Schleife um eins erhöht, und bei der weiteren weitergabe in f1 zu f2 noch einmal um 1 erhöhoht wird und</p>
<pre><code>int f2(int a)
{
    return (b+a);   // also sprich return (1+2)habe ich gedacht dann 
}
</code></pre>
<pre><code>int f1(int a)
   {
      b = f2(a+1)+1; //wäre hier b=3+1...aber das war dann wohl gänzlich daneben
      return (b);
   }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2334765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334765</guid><dc:creator><![CDATA[coc1948]]></dc:creator><pubDate>Thu, 27 Jun 2013 12:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterweitergabe und Erhöhung on Thu, 27 Jun 2013 12:14:08 GMT]]></title><description><![CDATA[<p>a+1 ist der Wert, der um 1 größer ist als a. Aber a selber ändert sich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334770</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 27 Jun 2013 12:14:08 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterweitergabe und Erhöhung on Thu, 27 Jun 2013 13:59:52 GMT]]></title><description><![CDATA[<p>Dein globales <strong>a</strong> ändert sich nie, es bleibt immer 0, daher wird beim Aufruf von <strong>f1</strong> immer 1 übergeben und schlussfolgernd <strong>f2</strong> immer 2.</p>
<p>Damit kommt der Aufruf von <strong>f2</strong> dem Ausdruck <em>b+2</em> gleich und...</p>
<pre><code>b = b+2+1;
</code></pre>
<p>...konnte vereinfacht werden zu...</p>
<pre><code>b += 3;
</code></pre>
<p>Der Aufruf von <strong>f1</strong> konnte durch den Rückgabewert <strong>b</strong> ersetzt werden, jedoch musste noch die vorherige Addition zu <strong>b</strong> vorangestellt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334788</guid><dc:creator><![CDATA[Youka]]></dc:creator><pubDate>Thu, 27 Jun 2013 13:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterweitergabe und Erhöhung on Thu, 27 Jun 2013 14:32:34 GMT]]></title><description><![CDATA[<p>Alles klar danke, jetzt ist es sogar für mich nachvollziehbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334798</guid><dc:creator><![CDATA[coc1948]]></dc:creator><pubDate>Thu, 27 Jun 2013 14:32:34 GMT</pubDate></item></channel></rss>