<?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[Casting-definition in Standard C++]]></title><description><![CDATA[<p>Hallo,<br />
ich frage mich, warum folgendes automatisch als int gecastet wird. Dazu mal ein rekursiver Algo zur Berechnung der Harmonischen Reihe:</p>
<pre><code class="language-cpp">double hr(double n)
{
	if(n==1)
		return 1;
	if(n==0)
		return -1;
	return (1/n)+hr(n-1);
}
</code></pre>
<p>(das -1 mal als Fehlercode betrachten)<br />
So!<br />
Deklariere ich die Funktion allerdings mit (int) als Parameter, ergo:</p>
<pre><code class="language-cpp">double hr(int n) {...}
</code></pre>
<p>castet der Spaßvogel den Bruch (1/n) ebenfalls in int.<br />
Nur warum?<br />
Prinzipiel macht diese Reihe hauptsächlich Sinn für <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>n</mi><mo>∈</mo><mrow><mi>N</mi></mrow></mrow><annotation encoding="application/x-tex">n \in{N}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.68333em;"></span><span class="strut bottom" style="height:0.72243em;vertical-align:-0.0391em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span><span class="mrel">∈</span><span class="mord textstyle uncramped"><span class="mord mathit" style="margin-right:0.10903em;">N</span></span></span></span></span>,<br />
warum also double/float als Parameter??? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Thx für Aufklärung <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/topic/123608/casting-definition-in-standard-c</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 16:38:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123608.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Oct 2005 12:34:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Tue, 18 Oct 2005 12:53:12 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich frage mich, warum folgendes automatisch als int gecastet wird. Dazu mal ein rekursiver Algo zur Berechnung der Harmonischen Reihe:</p>
<pre><code class="language-cpp">double hr(double n)
{
	if(n==1)
		return 1;
	if(n==0)
		return -1;
	return (1/n)+hr(n-1);
}
</code></pre>
<p>(das -1 mal als Fehlercode betrachten)<br />
So!<br />
Deklariere ich die Funktion allerdings mit (int) als Parameter, ergo:</p>
<pre><code class="language-cpp">double hr(int n) {...}
</code></pre>
<p>castet der Spaßvogel den Bruch (1/n) ebenfalls in int.<br />
Nur warum?<br />
Prinzipiel macht diese Reihe hauptsächlich Sinn für <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>n</mi><mo>∈</mo><mrow><mi>N</mi></mrow></mrow><annotation encoding="application/x-tex">n \in{N}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.68333em;"></span><span class="strut bottom" style="height:0.72243em;vertical-align:-0.0391em;"></span><span class="base textstyle uncramped"><span class="mord mathit">n</span><span class="mrel">∈</span><span class="mord textstyle uncramped"><span class="mord mathit" style="margin-right:0.10903em;">N</span></span></span></span></span>,<br />
warum also double/float als Parameter??? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Thx für Aufklärung <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/895073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895073</guid><dc:creator><![CDATA[ethereal]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:53:12 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Tue, 18 Oct 2005 12:38:58 GMT]]></title><description><![CDATA[<p>Wenn eine Division aus ints besteht, macht er halt nur ganzzahlige Division.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895083</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:38:58 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Tue, 18 Oct 2005 12:44:15 GMT]]></title><description><![CDATA[<p>du mußt ihn davon überzeugen, daß er mit double rechnen soll - und das macht C(++) nur, wenn auch doubles verwendet werden:</p>
<pre><code class="language-cpp">return (1.0/n)+hr(n-1);
</code></pre>
<p>(btw, das &quot;res=&quot; in der Rückgabeanweisung ist falsch und sinnlos)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895092</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:44:15 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Tue, 18 Oct 2005 12:52:53 GMT]]></title><description><![CDATA[<p>blubs, ja das is cpy&amp;paste, war aus einer alten version, schon weggemacht.<br />
trotzdem ist das doch sehr komisch. ich meine, mich stört, dass in der definition ein bruch nicht automatisch in ein float/double gecastet wird.<br />
is mir schon klar, dass ichs explizit angeben muss, aber gerade dass nervt mich halt <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/895103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895103</guid><dc:creator><![CDATA[ethereal]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Tue, 18 Oct 2005 12:58:47 GMT]]></title><description><![CDATA[<p>Das liegt daran, daß unter bestimmten Umständen auch die ganzzahlige Division (plus Modulo-Rechnung) gebraucht wird - und zwar häufiger als die gebrochene Division. Und da der Compiler eine überladene Funktion nicht nach Rückgabetyp auswählen kann, kann er nicht unterscheiden zwischen &quot;double operator/(int x,int y);&quot; und &quot;int operator/(int x,int y);&quot; - deswegen gibt es nur den letzteren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895108</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Tue, 18 Oct 2005 22:27:43 GMT]]></title><description><![CDATA[<p>ethereal schrieb:</p>
<blockquote>
<p>ich frage mich, warum folgendes automatisch als int gecastet wird.</p>
</blockquote>
<p>Verstehe nicht ganz was du meinst. Was wird denn als int &quot;gecastet&quot;?</p>
<p>ethereal schrieb:</p>
<blockquote>
<p>Deklariere ich die Funktion allerdings mit (int) als Parameter, ergo:</p>
<pre><code class="language-cpp">double hr(int n) {...}
</code></pre>
<p>castet der Spaßvogel den Bruch (1/n) ebenfalls in int.<br />
Nur warum?</p>
</blockquote>
<p>Nun, wie bereits gesagt wurde, ergibt int / int = int. Alles andere macht aus C++ Sicht, wegen der strikten Typisierung, auch keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895689</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 18 Oct 2005 22:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Wed, 19 Oct 2005 06:31:04 GMT]]></title><description><![CDATA[<p>ja das isses eben.<br />
er kann doch davon ausgehen, dass ein bruch eine dezialzahl wird, auch wenn mal eine ganze zahl rauskommen sollte.<br />
aber das der bruch dann auch ein int ist, ist doch eigentlich schon ein spezialfall.<br />
ich meine, in der mathematik geht man auch davon aus, dass ein bruch eine rationale zahl ist und nachkommastellen haben kann.<br />
man vereinbart ja auch nicht, dass er definition ein bruch immer die gerundete ganzzahl gibt.<br />
mir ist schon klar, wegen strikter Typisierung muss ein int rauskommen.<br />
aber ich fänd schöner, wenn int/int = double und wenn man halt doch ne ganzzahl haben ma, dann wirds in ein int gecastet <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/895766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895766</guid><dc:creator><![CDATA[ethereal]]></dc:creator><pubDate>Wed, 19 Oct 2005 06:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Wed, 19 Oct 2005 06:42:09 GMT]]></title><description><![CDATA[<p>ethereal schrieb:</p>
<blockquote>
<p>ich meine, in der mathematik geht man auch davon aus, dass ein bruch eine rationale zahl ist und nachkommastellen haben kann.</p>
</blockquote>
<p>Der operator/ ist kein Bruchstrich.</p>
<blockquote>
<p>aber ich fänd schöner, wenn int/int = double und wenn man halt doch ne ganzzahl haben ma, dann wirds in ein int gecastet <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>
</blockquote>
<p>Zum Glück geht's nicht danach, was du schöner findest. Ich fände es nicht so toll, wenn mit meinen ints eine langsame und potentiell ungenaue Fließkommadivision gemacht wird und ich noch zusätzlichen Aufwand betreiben muss, um daraus wieder einen int zu machen.</p>
<p>Möchtest du etwa auch, dass bei unsigned int - unsigned int das Ergebnis signed ist? Könnte ja eine negative Zahl dabei herauskommen <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>Mach einfach einen der Operanden zu double und du hast deine Fließkommadivision.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895771</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 19 Oct 2005 06:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to Casting-definition in Standard C++ on Wed, 19 Oct 2005 06:45:32 GMT]]></title><description><![CDATA[<p>ja is ja alles kein problem <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="🙂"
    /><br />
ich habe halt nur mal etwas genörgelt... <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/895775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895775</guid><dc:creator><![CDATA[ethereal]]></dc:creator><pubDate>Wed, 19 Oct 2005 06:45:32 GMT</pubDate></item></channel></rss>