<?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[Datenformat]]></title><description><![CDATA[<p>hallo zusammen!</p>
<p>Kann mir jemand sagen wie ich ein herauslaufen aus einem Datenformat innerhalb<br />
einer Gleichung verhindern kann?</p>
<p>also angenommen: y=x²+x+c;<br />
alle Variablen vom Typ int oder float;</p>
<p>die Werte für x und c werden vom Benutzer entgegengenommen und sind garantiert<br />
innerhalb des Bereichs. Wie aber kann ich dafür sorgen das beim durchführen der<br />
Gleichung kein int-Überlauf oder ein floating-point-overflow stattfinden kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/153911/datenformat</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 21:34:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/153911.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Jul 2006 19:02:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datenformat on Fri, 21 Jul 2006 19:02:17 GMT]]></title><description><![CDATA[<p>hallo zusammen!</p>
<p>Kann mir jemand sagen wie ich ein herauslaufen aus einem Datenformat innerhalb<br />
einer Gleichung verhindern kann?</p>
<p>also angenommen: y=x²+x+c;<br />
alle Variablen vom Typ int oder float;</p>
<p>die Werte für x und c werden vom Benutzer entgegengenommen und sind garantiert<br />
innerhalb des Bereichs. Wie aber kann ich dafür sorgen das beim durchführen der<br />
Gleichung kein int-Überlauf oder ein floating-point-overflow stattfinden kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102001</guid><dc:creator><![CDATA[TomTom85]]></dc:creator><pubDate>Fri, 21 Jul 2006 19:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to Datenformat on Sat, 22 Jul 2006 06:32:17 GMT]]></title><description><![CDATA[<p>Vielleicht nochmal etwas genauer.</p>
<p>Ich habe eine Klasse Term die einen Funktionsterm n-ten Grades aufnehmen kann.<br />
mit GetY(x) wird dann das dazugehörige y berechnet. Für x und die Koeffizienten werden jeweils int- oder float-Werte erwartet, bin mir da noch net ganz sicher.<br />
Der Rückgabewert von GetY(x) ist dann ebenfalls int oder float. Liegt es jetzt an mir innerhalb der Funktion bei der Berechnung einen Bereichsüberlauf zu verhindern oder muss der Benutzer der Klasse dafür sorgen dass er nur Werte übergibt die dann insgesamt bei der Berechnung nicht zu einem Überlauf führen.<br />
Und wenn es an mir liegt, gibt es da einen Weg einen Überlauf festzustellen?<br />
Bzw. wie kann ich ihn bei einem Gleitkommawert komplett verhindern, da er ja sofort<br />
zum Programmabbruch führen würde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102098</guid><dc:creator><![CDATA[TomTom85]]></dc:creator><pubDate>Sat, 22 Jul 2006 06:32:17 GMT</pubDate></item><item><title><![CDATA[Reply to Datenformat on Sun, 23 Jul 2006 10:16:15 GMT]]></title><description><![CDATA[<p>Versuche es mal mit <em>try</em> und <em>catch</em>.</p>
<pre><code class="language-cpp">try
{
  // Berechnungen ausführen
}
catch (...)   // Fehler abfangen, &quot;...&quot; steht für alle Fehler
{
  // das wird nur ausgeführt, wenn ein Fehler aufgetreten ist
}
</code></pre>
<p>Näheres findest du in der Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102477</guid><dc:creator><![CDATA[SomeBody]]></dc:creator><pubDate>Sun, 23 Jul 2006 10:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to Datenformat on Sun, 23 Jul 2006 12:03:12 GMT]]></title><description><![CDATA[<p>try/catch hilft dir hier nichts. Letztendlich musst du vorher prüfen, ob ein Überlauf stattfinden wird. Wenn die Berechnung bereits durchgeführt wurde, ist es im Grunde schon zu spät. Teilweise ist das Verhalten dann auch undefiniert, zB bei signed Integers. Letztendlich hast du mehrere Möglichkeiten, dieses Problem zu lösen. Eine wäre zB, eine Integer Klasse zu schreiben, und dort sämtliches Fehlerhandling durchzuführen. Dies ist aber recht aufwändig, und nicht gerade trivial. Ich experimentiere momentan gerade selbst an sowas. <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="🙂"
    /> Eine andere Möglichkeit wäre, du suchst dir eine Bibliothek für grosse Zahlen, die ihren Wertebereich dynamisch anpasst. Allerdings ist dann auch mit Performancenachteilen zu rechnen. Was Gleitkommazahlen betrifft, die kennen zusätzlich &quot;besondere&quot; Zustände, zB NaN, -INF oder +INF. Damit kann man sicherlich auch noch was machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102503</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 23 Jul 2006 12:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datenformat on Sun, 23 Jul 2006 17:13:14 GMT]]></title><description><![CDATA[<p>Ah.. das mit dem Float ist super. Hilft mir weiter.<br />
Aber bei int ist das so eine sache. bei einer Gleichung die z.B. aus 25 Parametern besteht ist es sicherlich schwierig vor der Berechnung zu prüfen ob ein Überlauf stattfinden kann. Die Eigentliche Frage ist folgende:</p>
<p>Nehmen wir an ich schreibe eine funktion int xx(int a, int b, int c, int d);</p>
<p>in der Funktion werden die 4 Werte adiert und zurückgeliefert.</p>
<p>liegt es jetzt am Benutzer der Funktion dafür zu sorgen, dass er der Funktion 4 Werte übergibt die bei einer Addition nicht zum Überlauf führen oder muss ich als Programmierer der Funktion einen Mechanismus einbauen der den Überlauf feststellt und eine Aushnehme wirft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102680</guid><dc:creator><![CDATA[TomTom85]]></dc:creator><pubDate>Sun, 23 Jul 2006 17:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to Datenformat on Mon, 24 Jul 2006 08:43:38 GMT]]></title><description><![CDATA[<p>Das ist letzendlich deine Sache. Entweder du erklärst dem Anwender, daß er sich um solche Angelegenheiten kümmern soll (und erklärst es als &quot;undefiniertes Verhalten&quot;, wenn zu große Eingabewerte kommen) oder du kümmerst dich selber um die Überprüfung.</p>
<p>PS: Du könntest auch einen eigenen Typ checked_int definieren, der jede Elementaroperation auf Bereichsüberlauf kontrolliert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102958</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 24 Jul 2006 08:43:38 GMT</pubDate></item></channel></rss>