<?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[c++ unsauber bei rückgabetypen?]]></title><description><![CDATA[<p>Hallo liebe <a href="http://c-plusplus.net" rel="nofollow">c-plusplus.net</a> community!</p>
<p>Hier ein kurzer Ausschnitt aus meinem C++ Projekt:</p>
<pre><code>float GeometryHelper::pointLineShortestDistance(...) 
{
    // ...
    return (vec_AP.x * vec_normal.x + vec_AP.y * vec_normal.y);
}
</code></pre>
<p>Ich bekomme in einem Beispiel einen Wert mit DOUBLE Präzision zurück?!?! Wenn ich beim return explizit auf (float) caste funtioniert das ganze. Aber ich bin wirklich überrascht, dass C++ einfach einen double wert zurückliefert, obwohl ich als rückgabetyp explizit float angegeben habe...</p>
<p>Ich hätte zumindest eine Warnung vom Compiler erwartet, aber auch wenn ich alle Warnungen sehen möchte kommt dazu nichts... Es ist für mich kein Umstand, vorher zu casten, aber ich bin nur drauf gekommen weil ich bei einem unit test f0.0 erwartet habe und nicht -2.98023e-07 <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>
<p>Oder habe ich irgendwas übersehen und rege mich zu unrecht auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261767/c-unsauber-bei-rückgabetypen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 02:47:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261767.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Feb 2010 15:19:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 15:19:59 GMT]]></title><description><![CDATA[<p>Hallo liebe <a href="http://c-plusplus.net" rel="nofollow">c-plusplus.net</a> community!</p>
<p>Hier ein kurzer Ausschnitt aus meinem C++ Projekt:</p>
<pre><code>float GeometryHelper::pointLineShortestDistance(...) 
{
    // ...
    return (vec_AP.x * vec_normal.x + vec_AP.y * vec_normal.y);
}
</code></pre>
<p>Ich bekomme in einem Beispiel einen Wert mit DOUBLE Präzision zurück?!?! Wenn ich beim return explizit auf (float) caste funtioniert das ganze. Aber ich bin wirklich überrascht, dass C++ einfach einen double wert zurückliefert, obwohl ich als rückgabetyp explizit float angegeben habe...</p>
<p>Ich hätte zumindest eine Warnung vom Compiler erwartet, aber auch wenn ich alle Warnungen sehen möchte kommt dazu nichts... Es ist für mich kein Umstand, vorher zu casten, aber ich bin nur drauf gekommen weil ich bei einem unit test f0.0 erwartet habe und nicht -2.98023e-07 <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>
<p>Oder habe ich irgendwas übersehen und rege mich zu unrecht auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860127</guid><dc:creator><![CDATA[Rechenwerkzwerg]]></dc:creator><pubDate>Tue, 23 Feb 2010 15:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 15:22:07 GMT]]></title><description><![CDATA[<p>Wie kommst du denn zu deiner Behauptung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860129</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 23 Feb 2010 15:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 15:23:12 GMT]]></title><description><![CDATA[<p>Rechenwerkzwerg schrieb:</p>
<blockquote>
<p>Oder habe ich irgendwas übersehen und rege mich zu unrecht auf?</p>
</blockquote>
<p>Ja. Du bekommst einen <code>float</code> zurück.</p>
<p>Dass du diesen für einen <code>double</code> hältst, liegt wohl an den Ausgabestreams (oder dem Debugger, je nachdem, was du verwendet hast). Mehr angezeigte Stellen bedeutet nicht, dass diese auch genau sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860130</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Feb 2010 15:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 15:32:14 GMT]]></title><description><![CDATA[<p>danke für die schnelle antwort.</p>
<p>wie kann das sein? ich meine folgendes:<br />
wenn ich beim return EXPLIZIT auf FLOAT caste, dann kommt was anderes raus als wenn ich nicht caste. obwohl der rückgabetyp float ist! das macht doch gar keinen sinn!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860134</guid><dc:creator><![CDATA[Rechenwerkzwerg]]></dc:creator><pubDate>Tue, 23 Feb 2010 15:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 15:33:58 GMT]]></title><description><![CDATA[<p>die x und y-werte da sind übrigens ebenfalls floats</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860135</guid><dc:creator><![CDATA[Rechenwerkzwerg]]></dc:creator><pubDate>Tue, 23 Feb 2010 15:33:58 GMT</pubDate></item><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 15:41:54 GMT]]></title><description><![CDATA[<p>Beantworte zuerst SeppJs Frage. Etwas Code wäre auch nicht schlecht.</p>
<p>Mit welchem Compiler arbeitest du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860140</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Feb 2010 15:41:54 GMT</pubDate></item><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 15:41:53 GMT]]></title><description><![CDATA[<p>Rechenwerkzwerg schrieb:</p>
<blockquote>
<p>danke für die schnelle antwort.</p>
<p>wie kann das sein? ich meine folgendes:<br />
wenn ich beim return EXPLIZIT auf FLOAT caste, dann kommt was anderes raus als wenn ich nicht caste. obwohl der rückgabetyp float ist! das macht doch gar keinen sinn!</p>
</blockquote>
<p>Zeig mal den Cast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860142</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 23 Feb 2010 15:41:53 GMT</pubDate></item><item><title><![CDATA[Reply to c++ unsauber bei rückgabetypen? on Tue, 23 Feb 2010 16:17:59 GMT]]></title><description><![CDATA[<p>argh, sorry! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
<strong>kurze version:</strong><br />
SeppJ hatte recht, es ist doch float! Ich bin nur einmal auf 0 gekommen weil ich float zwischergebnisse verwendet hatte...</p>
<p><strong>lange version:</strong><br />
Ich war mir eben so sicher, aber ich hab wohl was durcheinander gebracht, weil meine eigene library nicht dem neusten quellcode stand entsprach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /> (das codebeispiel ist aus einer eigenen library, die ich in einem anderen projekt unit-testing unterziehe)</p>
<p>dass da 0 raus kam lag nicht an dem cast beim return, sondern daran:</p>
<pre><code>float GeometryHelper::pointLineShortestDistance(...)
{
    // ...

    float tmp1, tmp2;
    tmp1 = (vec_AP.x * vec_normal.x);
    tmp2 = (vec_AP.y * vec_normal.y);

    return (tmp1 + tmp2);
}
</code></pre>
<p>ich hatte mit zwischenergebnissen vom typ float gerechnet... deshalb kam 0 raus. es war also die ganze zeit float <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>trotzdem danke an alle <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="🙂"
    /> ist schön zu sehen wie schnell einem hier geholfen wird!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860156</guid><dc:creator><![CDATA[Rechenwerkzwerg]]></dc:creator><pubDate>Tue, 23 Feb 2010 16:17:59 GMT</pubDate></item></channel></rss>