<?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[Rückgabewert nicht wie erwartet]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Ich hab mich nach Python jetzt mal an C++ rangetraut. Ist ja doch in einigen Bezügen sehr verschieden. Jetzt hab ich ein Problem mit einem kleinen Programm.<br />
Wenn man das Programm durchlaufen lässt ändert sich nur der Wert a in der funktion update. Der Wert in int main() bleibt unverändert.</p>
<p>Bitte um Hilfe!</p>
<pre><code class="language-cpp">#include &lt;time.h&gt;
#include &lt;iostream&gt;

using namespace std;

float a;
int xx;
float m = 1.0;

int update(float a, float m)
{
    a = a + m;
    cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
    return a;
}

int main()
{
    while (xx==0)
    {
        sleep(2);
        m = m - 0.1;
        cout &lt;&lt; &quot;m = &quot; &lt;&lt; m &lt;&lt;endl;
        a = update(a, m);
        cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/241513/rückgabewert-nicht-wie-erwartet</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 12:08:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241513.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 May 2009 16:15:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 16:15:28 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Ich hab mich nach Python jetzt mal an C++ rangetraut. Ist ja doch in einigen Bezügen sehr verschieden. Jetzt hab ich ein Problem mit einem kleinen Programm.<br />
Wenn man das Programm durchlaufen lässt ändert sich nur der Wert a in der funktion update. Der Wert in int main() bleibt unverändert.</p>
<p>Bitte um Hilfe!</p>
<pre><code class="language-cpp">#include &lt;time.h&gt;
#include &lt;iostream&gt;

using namespace std;

float a;
int xx;
float m = 1.0;

int update(float a, float m)
{
    a = a + m;
    cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
    return a;
}

int main()
{
    while (xx==0)
    {
        sleep(2);
        m = m - 0.1;
        cout &lt;&lt; &quot;m = &quot; &lt;&lt; m &lt;&lt;endl;
        a = update(a, m);
        cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1713807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713807</guid><dc:creator><![CDATA[silentpolygon]]></dc:creator><pubDate>Thu, 21 May 2009 16:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 16:33:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;ctime&gt; // &lt;time.h&gt; ist veraltet
#include &lt;iostream&gt; 

using namespace std; 

float a;	  	// böse globale Variable
int xx;		   // böse globale Variable
float m = 1.0;	// böse globale Variable

int update(float a, float m)	// Wozu sollen 2 Parameter übegeben werden,
{							   // wenn die Funktion sowieso globale Variablen verwendet?
	::a = ::a + ::m;				   // Zugriff auf globale Variable per '::'
	cout &lt;&lt; &quot;a = &quot; &lt;&lt; ::a &lt;&lt; endl;	 // auch Zugriffsoperator oder Scopeoperator genannt
	return ::a;		// Wozu ein Rückgabewert bei globalen Variablen?
}

int main() 
{ 
    while (xx==0) // Endlosschleife
    { 
        //sleep(2); &lt;-- kennt Windows in dieser Schreibweise nicht, und ohne &lt;windows.h&gt; erst recht nicht
        m = m - 0.1; 
        cout &lt;&lt; &quot;m = &quot; &lt;&lt; m &lt;&lt;endl; 
        a = update(a, m); 
        cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl; 
    } 
    return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1713819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713819</guid><dc:creator><![CDATA[Mamel the Wanderer]]></dc:creator><pubDate>Thu, 21 May 2009 16:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 16:38:56 GMT]]></title><description><![CDATA[<p>Abgesehen davon, dass du eine Endlosschleife hast, haben a und xx zufällige Werte... du solltest deine Variablen erstmal initialisieren...<br />
auch wäre es wohl sinnvoller, deiner Funktion update() als Rückgabetypen auch float zu geben...</p>
<p>Zu den globalen Variablen undso wurd ja schon alles gesagt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713822</guid><dc:creator><![CDATA[U-Boot]]></dc:creator><pubDate>Thu, 21 May 2009 16:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 16:47:50 GMT]]></title><description><![CDATA[<p>danke für die Antworten und die tips.<br />
Hab denk ich mal zu lange mit Python gearbeitet.<br />
Das mit dem sleep rührt daher, das ich unter Linux arbeite. Bei Windows is das Sleep.</p>
<p>Funktioniert jetzt nachdem ich aus int update -&gt; float update gemacht habe.</p>
<pre><code class="language-cpp">#include &lt;ctime&gt;
#include &lt;iostream&gt;
using namespace std;

float update(float a, float m)
{
    a = a + m;
    cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
    return a;
}

int main()
{
    int xx;
    float a;
    float m = 1.0;
    while (xx==0)
    {
        sleep(4);
        m = m - 0.1;
        cout &lt;&lt; &quot;m = &quot; &lt;&lt; m &lt;&lt;endl;
        a = update(a, m);
        cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1713824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713824</guid><dc:creator><![CDATA[silentpolygon]]></dc:creator><pubDate>Thu, 21 May 2009 16:47:50 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 16:57:19 GMT]]></title><description><![CDATA[<p>Ich hab jetzt wohl das &quot;Glück&quot; dass xx zufällig nicht mit 0 initialisiert wird, somit die Schleife garnicht ausgeführt wird... ich glaube nicht, dass das gewünschtes Verhalten sein kann.<br />
Genau das Gleiche mit a, das kann auch alles und nichts sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713827</guid><dc:creator><![CDATA[U-Boot]]></dc:creator><pubDate>Thu, 21 May 2009 16:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 17:08:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

float update(float a, float m)
{
    a = a + m;
    return a;
}

int main()
{
    float a = 1.0;
    float m = 0.233;
    while (a &lt; 10)
    {
        sleep(1);
        a = update(a, m);
        cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
<p>Da wollte ich hin. <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713832</guid><dc:creator><![CDATA[silentpolygon]]></dc:creator><pubDate>Thu, 21 May 2009 17:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 17:14:06 GMT]]></title><description><![CDATA[<p>U-Boot schrieb:</p>
<blockquote>
<p>Abgesehen davon, dass du eine Endlosschleife hast, haben a und xx zufällige Werte... du solltest deine Variablen erstmal initialisieren...</p>
</blockquote>
<p>Globale Variablen (zumindest PODs) werden mit 0 initialisiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713834</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 21 May 2009 17:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert nicht wie erwartet on Thu, 21 May 2009 20:09:17 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wie wär's mit</p>
<pre><code class="language-cpp">...
void update(float&amp; a, float m)
{
    a += m;
}

int main()
{
...
        update(a, m);
        cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl;
...
</code></pre>
<p>Das würde ich jedenfalls eher von der genannten Funktion erwarten.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713925</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 21 May 2009 20:09:17 GMT</pubDate></item></channel></rss>