<?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[Implizite Typkonvertierung]]></title><description><![CDATA[<p>Hallo ihr <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>
<p>Nur eine ganz kleine Frage:</p>
<pre><code class="language-cpp">double foo;
foo = 42;  // Variante 1
foo = 42.; // Variante 2
</code></pre>
<p>Sind beide Varianten zur Laufzeit äquivalent? Sprich: Konvertiert der Compiler bereits zur Compilezeit Variante 1 in eine double-Konstante oder wird zuerst eine temporäre int-Konstante erzeugt, die dann in einen double-Wert gecastet wird?</p>
<p>Welche der beiden Varianten sollte man benutzen?</p>
<p>Vielen Dank schon einmal für die vermutlich wie immer kompetente Hilfe <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>
<p>PS: Gleiches gilt natürlich auch, wenn man eine double-Variable mit einer ganzzahligen Zahl vergleichen will:</p>
<pre><code class="language-cpp">double foo = ....;
if (foo &gt;= 42) bar();  // Variante 1
if (foo &gt;= 42.) bar(); // Variante 2
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/243550/implizite-typkonvertierung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 00:33:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243550.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Jun 2009 09:40:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Implizite Typkonvertierung on Thu, 18 Jun 2009 09:58:31 GMT]]></title><description><![CDATA[<p>Hallo ihr <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>
<p>Nur eine ganz kleine Frage:</p>
<pre><code class="language-cpp">double foo;
foo = 42;  // Variante 1
foo = 42.; // Variante 2
</code></pre>
<p>Sind beide Varianten zur Laufzeit äquivalent? Sprich: Konvertiert der Compiler bereits zur Compilezeit Variante 1 in eine double-Konstante oder wird zuerst eine temporäre int-Konstante erzeugt, die dann in einen double-Wert gecastet wird?</p>
<p>Welche der beiden Varianten sollte man benutzen?</p>
<p>Vielen Dank schon einmal für die vermutlich wie immer kompetente Hilfe <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>
<p>PS: Gleiches gilt natürlich auch, wenn man eine double-Variable mit einer ganzzahligen Zahl vergleichen will:</p>
<pre><code class="language-cpp">double foo = ....;
if (foo &gt;= 42) bar();  // Variante 1
if (foo &gt;= 42.) bar(); // Variante 2
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1728676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728676</guid><dc:creator><![CDATA[Bloops]]></dc:creator><pubDate>Thu, 18 Jun 2009 09:58:31 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Typkonvertierung on Thu, 18 Jun 2009 09:47:24 GMT]]></title><description><![CDATA[<p>Bloops schrieb:</p>
<blockquote>
<p>Sind beide Varianten zur Laufzeit äquivalent?</p>
</blockquote>
<p>An Stellen wo es wirklich keinen echten Mehraufwand bedeuted, würde ich mich nicht einfach auf Compileroptimierungen verlassen. Daher würde ich einen double auch einen Doublewert zuweisen.</p>
<p>Bloops schrieb:</p>
<blockquote>
<p>PS: Gleiches gilt natürlich auch, wenn man eine double-Variable mit einer ganzzahligen Zahl vergleichen will:</p>
</blockquote>
<p>Hier gilt das gleiche, zusätzlich aber:<br />
Fließkommazahlen sollte man niemals mit einem exakten Vergleich auf Gleichheit prüfen! Fließkommazahlen sind nicht genau. Statt dessen macht man eigentlich immer einen Deltavergleich, mit einem sinnvoll gewählten Schwellenwert.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728681</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 18 Jun 2009 09:47:24 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Typkonvertierung on Thu, 18 Jun 2009 09:58:11 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schnelle Antwort erstmal!</p>
<p>asc schrieb:</p>
<blockquote>
<p>... würde ich mich nicht einfach auf Compileroptimierungen verlassen ...</p>
</blockquote>
<p>Das heißt, es ist compilerabhängig und nirgendwo spezifiziert/standardisiert?</p>
<p>asc schrieb:</p>
<blockquote>
<p>Fließkommazahlen sollte man niemals mit einem exakten Vergleich auf Gleichheit prüfen!</p>
</blockquote>
<p>Weiß ich doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> Aber sollte nicht eine ganzzahlige Zahl, die noch komplett in die Mantisse passt, auch exakt repräsentiert werden? <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="😕"
    /> Bei großen Zahlen und Kommazahlen, siehts natürlich anders aus. Wie dem auch sei, ich ändere einfach mal den vorigen Post, um Klarheit zu schaffen <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/1728687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728687</guid><dc:creator><![CDATA[Bloops]]></dc:creator><pubDate>Thu, 18 Jun 2009 09:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Typkonvertierung on Thu, 18 Jun 2009 10:15:45 GMT]]></title><description><![CDATA[<p>Bloops schrieb:</p>
<blockquote>
<p>Weiß ich doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> Aber sollte nicht eine ganzzahlige Zahl, die noch komplett in die Mantisse passt, auch exakt repräsentiert werden?</p>
</blockquote>
<p>Ich sehe es so: Es kann leicht passieren das man Code nochmals um eine Berechnung etc. erweitert, und sich dann auf einmal Wundert das etwas nicht mehr wie erwartet läuft. Es geht nicht um die Ganzzahl, sondern wie sich die Fließkommazahl herleitet. Sobald Berechnungen ins Spiel kommen, ist die Gleichheit nicht mehr garantiert.</p>
<p>Davon abgesehen: 1 ist als Integer definiert, 1.0 als double. Die Frage ist nur was der Compiler macht, wenn er eine Fixe Initialisierung sieht. In so fern: Compilerabhängig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728699</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 18 Jun 2009 10:15:45 GMT</pubDate></item></channel></rss>