<?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[Ich krieg immer NAN und weiß nicht warum]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss die komplexen Zahlen für ne Aufgabe modellieren und hab schonmal die Additionsfunktion geschrieben. Aber komischerweise krieg ich in der Ausgabe immer ein NAN:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

struct Complex{
	float real;
	float imaginaer;

	Complex *addition(Complex *b);
	/*Complex *subtraktion(Complex *a, Complex *b);
	Complex *multiplikation(Complex *a, Complex *b);
	Complex *division(Complex *a, Complex *b);
	float betrag(Complex *a);
	Complex *konjugieren(Complex *a);*/
};

Complex *Complex::addition(Complex *b){
	float tmp_real = real + b-&gt;real;
	float tmp_imaginaer = imaginaer + b-&gt;imaginaer;
	Complex p;
	p.real = tmp_real;
	p.imaginaer = tmp_imaginaer;
	Complex *ptr = &amp;p;
	return ptr;
}

int main(){
	Complex a, b;
	a.real = 3.0f;
	b.real = 9.0f;
	a.imaginaer = 10.0f;
	b.imaginaer = -2.0f;
	Complex *res = a.addition(&amp;b);
	cout &lt;&lt; res-&gt;real &lt;&lt; &quot;, &quot; &lt;&lt; res-&gt;imaginaer &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Wenn ich in der Funktion &quot;addition&quot; real und imaginaer ausgeben lasse, kommen 12 und 8 raus, aber wenn ich es in der main via dem Zeiger res ausgeben lasse, steht dann 12 und nan. Warum denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264516/ich-krieg-immer-nan-und-weiß-nicht-warum</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 18:00:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264516.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Apr 2010 18:11:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:11:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss die komplexen Zahlen für ne Aufgabe modellieren und hab schonmal die Additionsfunktion geschrieben. Aber komischerweise krieg ich in der Ausgabe immer ein NAN:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

struct Complex{
	float real;
	float imaginaer;

	Complex *addition(Complex *b);
	/*Complex *subtraktion(Complex *a, Complex *b);
	Complex *multiplikation(Complex *a, Complex *b);
	Complex *division(Complex *a, Complex *b);
	float betrag(Complex *a);
	Complex *konjugieren(Complex *a);*/
};

Complex *Complex::addition(Complex *b){
	float tmp_real = real + b-&gt;real;
	float tmp_imaginaer = imaginaer + b-&gt;imaginaer;
	Complex p;
	p.real = tmp_real;
	p.imaginaer = tmp_imaginaer;
	Complex *ptr = &amp;p;
	return ptr;
}

int main(){
	Complex a, b;
	a.real = 3.0f;
	b.real = 9.0f;
	a.imaginaer = 10.0f;
	b.imaginaer = -2.0f;
	Complex *res = a.addition(&amp;b);
	cout &lt;&lt; res-&gt;real &lt;&lt; &quot;, &quot; &lt;&lt; res-&gt;imaginaer &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Wenn ich in der Funktion &quot;addition&quot; real und imaginaer ausgeben lasse, kommen 12 und 8 raus, aber wenn ich es in der main via dem Zeiger res ausgeben lasse, steht dann 12 und nan. Warum denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879579</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:14:36 GMT]]></title><description><![CDATA[<p>Du gibst eine ADresse auf eine lokale Variable zurück, das geht so nicht, die Variable stirbt bei Funktionsende.<br />
Du mußt hier auf die Zeiger verzichten und ganze Complex-Objekte zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879580</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:14:36 GMT</pubDate></item><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:14:48 GMT]]></title><description><![CDATA[<p>p ist eine lokale Variable. Sie hört mit dem Verlassen der Funktion auf zu existieren. Wenn du einen Zeiger darauf zurückgibst und später dereferenzierst, greifst du also ins Leere, das Verhalten ist undefiniert.</p>
<p>Hat es eigentlich einen tieferen Sinn, dass du mit Zeigern hantierst? Deine Ministruktur kannst du problemlos als Wert herumreichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879581</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:18:17 GMT]]></title><description><![CDATA[<p>Complex *ptr = &amp;p;<br />
Damit erstellst du eine lokale Variable, die nach dem verlassen der Funktion gelöscht wird. Der Zeiger zeigt ins Nichts (&quot;wilder Zeiger&quot;). Wenn du unbedingt Zeiger benutzen willst dann schreibe statt</p>
<pre><code class="language-cpp">Complex p;
</code></pre>
<pre><code class="language-cpp">Complex* ptr = new Complex;
</code></pre>
<p>Den Rückgabewert musst du dann aber in main() mit delete löschen um kein Speicherleck zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879583</guid><dc:creator><![CDATA[Oberon00]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:26:29 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a> Aahhh, Danke. Oh Mann, wie konnte ich nur sowas vergessen ._.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/904">@Bashar</a> Naja, ich hab mit Zeigern so meine Probleme, deshalb wollte ich explizit mit denen arbeiten, um mich darin zu üben. Ich komme aus der Java-Welt, wo ich mich um Zeiger usw. nicht kümmern musste^^. Aber jetzt wird's Zeit!</p>
<p>@Oberon00 Danke für die Zeiger-Lösung <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/1879587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879587</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:31:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(;;){//Endlosschleife, um im Taskmanager das Speicherloch zu sehen
   Complex* a=new Complex(1,2);
   Complex* b=new Complex(1,3);
   Complex* c=a-&gt;addiere(b)-&gt;addiere(c);
   delete a,b,c;//Wo ist der Speicher hin?
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1879591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879591</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:31:49 GMT</pubDate></item><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:40:58 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p>Naja, ich hab mit Zeigern so meine Probleme, deshalb wollte ich explizit mit denen arbeiten, um mich darin zu üben. Ich komme aus der Java-Welt, wo ich mich um Zeiger usw. nicht kümmern musste^^.</p>
</blockquote>
<p>Naja, so richtig doll kümmern muss man sich in C++ auch nicht -- d.h. wenn man mal das ganze new/delete Zeugs vermeidet. Das sollte die erste Regel für Konvertierende sein: &quot;Probier's ohne new/delete&quot; <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1879596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879596</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:40:58 GMT</pubDate></item><item><title><![CDATA[Reply to Ich krieg immer NAN und weiß nicht warum on Thu, 08 Apr 2010 18:58:52 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/904">@Bashar</a> Naja, ich hab mit Zeigern so meine Probleme, deshalb wollte ich explizit mit denen arbeiten, um mich darin zu üben. Ich komme aus der Java-Welt, wo ich mich um Zeiger usw. nicht kümmern musste^^. Aber jetzt wird's Zeit!</p>
</blockquote>
<p>Eigentlich hantiert man in Java die ganze Zeit mit Zeigern, sie heißen nur anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879610</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 08 Apr 2010 18:58:52 GMT</pubDate></item></channel></rss>