<?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[Überlauf bei Zählern mit int-Typen feststellen]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe eine Struktur dieser Art:</p>
<pre><code class="language-cpp">unsigned long counter;

while (true) {
    if (irgendwas)
        counter++;
    if (was_anderes)
        break;
}
</code></pre>
<p>Wie kan ich merken, wenn counter übergelaufen ist, ohne jedes Mal explizit zu prüfen (mittels Größenvergleich oder logischem AND) ?</p>
<p>Werde das Gefühl nicht los, das das passiert weil ich hier merkwürdige Ergebnisse erhalte.</p>
<p>Danke &amp; Grüße,<br />
Benjamin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/141499/überlauf-bei-zählern-mit-int-typen-feststellen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 13:20:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141499.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Mar 2006 15:12:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überlauf bei Zählern mit int-Typen feststellen on Wed, 22 Mar 2006 15:51:30 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe eine Struktur dieser Art:</p>
<pre><code class="language-cpp">unsigned long counter;

while (true) {
    if (irgendwas)
        counter++;
    if (was_anderes)
        break;
}
</code></pre>
<p>Wie kan ich merken, wenn counter übergelaufen ist, ohne jedes Mal explizit zu prüfen (mittels Größenvergleich oder logischem AND) ?</p>
<p>Werde das Gefühl nicht los, das das passiert weil ich hier merkwürdige Ergebnisse erhalte.</p>
<p>Danke &amp; Grüße,<br />
Benjamin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021775</guid><dc:creator><![CDATA[Benja_m]]></dc:creator><pubDate>Wed, 22 Mar 2006 15:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf bei Zählern mit int-Typen feststellen on Wed, 22 Mar 2006 15:13:26 GMT]]></title><description><![CDATA[<p>Plattformabhängig: Carry-Bit prüfen<br />
Mit C++: Testen ob die neue Zahl kleiner als die vorherige ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021776</guid><dc:creator><![CDATA[Kenn0r]]></dc:creator><pubDate>Wed, 22 Mar 2006 15:13:26 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf bei Zählern mit int-Typen feststellen on Wed, 22 Mar 2006 15:25:28 GMT]]></title><description><![CDATA[<p>für ganz korrekte: counter auf maximum (std::numeric_limits) prüfen, bevor der counter inkrementiert wird, alles andere findet (formal) in UB land statt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021790</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 22 Mar 2006 15:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf bei Zählern mit int-Typen feststellen on Wed, 22 Mar 2006 15:50:57 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>für ganz korrekte: counter auf maximum (std::numeric_limits) prüfen, bevor der counter inkrementiert wird, alles andere findet (formal) in UB land statt.</p>
</blockquote>
<p>Das läuft dann aber auf eine ständige Abfrage hinaus ?</p>
<pre><code class="language-cpp">unsigned long counter;

while (true) {
    if (irgendwas)
        if (counter &lt; unsigned_long_max) {// genaue Syntax is mir grad entfallen
            counter++;
        } else {
            cout &lt;&lt; &quot;Hilfe, Überlauf ;-)&quot;;
        }
    if (was_anderes)
        break;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1021819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021819</guid><dc:creator><![CDATA[Benja_m]]></dc:creator><pubDate>Wed, 22 Mar 2006 15:50:57 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf bei Zählern mit int-Typen feststellen on Wed, 22 Mar 2006 16:05:46 GMT]]></title><description><![CDATA[<p>Benja_m schrieb:</p>
<blockquote>
<p>Das läuft dann aber auf eine ständige Abfrage hinaus ?</p>
</blockquote>
<p>immer dann, wenn ein überlauf stattfinden könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021855</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 22 Mar 2006 16:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf bei Zählern mit int-Typen feststellen on Wed, 22 Mar 2006 16:14:33 GMT]]></title><description><![CDATA[<p>ein überlauf kann potentiell immer auftreten, wenn der counter erhöht wird. der counter wird in ~90% der fälle erhöht. also ziemlich oft <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/1021867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021867</guid><dc:creator><![CDATA[Benja_m]]></dc:creator><pubDate>Wed, 22 Mar 2006 16:14:33 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf bei Zählern mit int-Typen feststellen on Wed, 22 Mar 2006 16:24:08 GMT]]></title><description><![CDATA[<p>Benja_m schrieb:</p>
<blockquote>
<p>ein überlauf kann potentiell immer auftreten, wenn der counter erhöht wird. der counter wird in ~90% der fälle erhöht. also ziemlich oft <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>
</blockquote>
<p>dann musst du auch sooft prüfen, wenn du daran interessiert bist, ihn zu verhindern. nun ist dieser test ja nicht aufwendiger als den überlauf festzustellen, wenn er eingetreten ist - insofern kein problem. häufig genug kann man sich das aber auch sparen: auf den meisten plattformen werden überläufe ignoriert und man kann änderungen durch differenzbildung (was den überlauf für vorzeichenlose typen egalisiert) erkennen. oder man benutzt grosse 64bit integer: die werden in der praxis nicht überlaufen (nimm einen computer mit 2^32 Hz takt an und eine erhöhung je takt, dann dauert es immer noch ~136 jahre bis zum überlauf).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021878</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 22 Mar 2006 16:24:08 GMT</pubDate></item></channel></rss>