<?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[interessanter Fehler ! Overflow?]]></title><description><![CDATA[<p>Wenn man bei folgendem Programm :</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
    using namespace std;

    int main()
    {
	int zahl1;
	int zahl2;

	cout&lt;&lt;&quot;Bitte eine Zahl eingeben\t&quot;;
	cin&gt;&gt;zahl1;
	cout&lt;&lt;&quot;Bitte noch eine Zahl eingeben\t&quot;;
	cin&gt;&gt;zahl2;
	cout&lt;&lt;&quot;Zu erst eingegebene Zahl:&quot;&lt;&lt;zahl1&lt;&lt;&quot;\n&quot;;
	cout&lt;&lt;&quot;Als zweites eingegebene Zahl:&quot;&lt;&lt;zahl2&lt;&lt;&quot;\n&quot;;
}
</code></pre>
<p>...bei der ersten Eingabe-Aufforderung mehr als 10 Ziffern eingibt wird die zweite Aufforderung übersprungen und gleich &quot;Zu erst eingegebene Zahl: &quot;xxx&quot; &quot; ausgegeben. &quot;Als zweites eingegebene Zahl:&quot; kommt auch raus, jedoch immer mit einer negativen Ziffernfolge, je nachdem welche Ziffernfolge mit über 10 Ziffern eingegeben worden ist verändert sich auch diese!<br />
Kompilliert ganz normal in der Bash mit</p>
<pre><code>g++ xxx.cpp
</code></pre>
<p>,danach</p>
<pre><code>./xxx
</code></pre>
<p>Interessant! Bin ich da etwa auf einen noch nicht behobenen Fehler in C++ oder so gestoßen und hab n Buffer-Overflow erzeugt ??!?!? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Was ist das? Fehler? Normale Funktionsweise von C++? ...?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234092/interessanter-fehler-overflow</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 11:55:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234092.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Feb 2009 23:35:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Thu, 12 Feb 2009 23:35:04 GMT]]></title><description><![CDATA[<p>Wenn man bei folgendem Programm :</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
    using namespace std;

    int main()
    {
	int zahl1;
	int zahl2;

	cout&lt;&lt;&quot;Bitte eine Zahl eingeben\t&quot;;
	cin&gt;&gt;zahl1;
	cout&lt;&lt;&quot;Bitte noch eine Zahl eingeben\t&quot;;
	cin&gt;&gt;zahl2;
	cout&lt;&lt;&quot;Zu erst eingegebene Zahl:&quot;&lt;&lt;zahl1&lt;&lt;&quot;\n&quot;;
	cout&lt;&lt;&quot;Als zweites eingegebene Zahl:&quot;&lt;&lt;zahl2&lt;&lt;&quot;\n&quot;;
}
</code></pre>
<p>...bei der ersten Eingabe-Aufforderung mehr als 10 Ziffern eingibt wird die zweite Aufforderung übersprungen und gleich &quot;Zu erst eingegebene Zahl: &quot;xxx&quot; &quot; ausgegeben. &quot;Als zweites eingegebene Zahl:&quot; kommt auch raus, jedoch immer mit einer negativen Ziffernfolge, je nachdem welche Ziffernfolge mit über 10 Ziffern eingegeben worden ist verändert sich auch diese!<br />
Kompilliert ganz normal in der Bash mit</p>
<pre><code>g++ xxx.cpp
</code></pre>
<p>,danach</p>
<pre><code>./xxx
</code></pre>
<p>Interessant! Bin ich da etwa auf einen noch nicht behobenen Fehler in C++ oder so gestoßen und hab n Buffer-Overflow erzeugt ??!?!? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Was ist das? Fehler? Normale Funktionsweise von C++? ...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1662879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1662879</guid><dc:creator><![CDATA[severin89-030]]></dc:creator><pubDate>Thu, 12 Feb 2009 23:35:04 GMT</pubDate></item><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Fri, 13 Feb 2009 05:22:40 GMT]]></title><description><![CDATA[<p>Dann solltest du zur Sicherheit zwischen den beiden Eingaben den Eingabepuffer leeren. Dazu gibts hier einige Thread, einfach mal suchen. <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>P.S.: Schöner ist der Effekt, wenn du in einer Schleife viele int-Werte einlesen willst und dann einen Buchstaben eingibst. <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/1662907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1662907</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 13 Feb 2009 05:22:40 GMT</pubDate></item><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Fri, 13 Feb 2009 12:14:37 GMT]]></title><description><![CDATA[<blockquote>
<p>mehr als 10 Ziffern eingibt wird</p>
</blockquote>
<p>Also deine Zahl ist groesser als 10 Milliarden? Und wie gross kann eine Zahl maximal sein um sie im Binaersystem mit 32 Bit darzustellen (vorzeichenbehaftet)? Das ausgerechnet DU einen Bug in g++ findest, dem sonst noch niemand aufgefallen ist, wage ich zu bezweifeln. Das, was du da siehst, ist &quot;undefiniertes Verhalten&quot;. Verwende die Funktion richtig und du hast keine Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663063</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 13 Feb 2009 12:14:37 GMT</pubDate></item><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Fri, 13 Feb 2009 16:06:27 GMT]]></title><description><![CDATA[<p><strong>@severin89-030</strong><br />
Guter Titel! Da wird wohl jeder neugierig. <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>Zum Problem:<br />
Wenn du eine fehlerhafte Eingabe vornimmst, wie z.B. ein zu große Zahl, die nicht in einen Integer passt, geht der Eingabestream (cin) in einen Fehlerzustand, den du auch abfragen kannst. Z.B. so:</p>
<pre><code class="language-cpp">cin &gt;&gt; zahl1;
if (!cin)
   cout &lt;&lt; &quot;Fehlerhafte eingabe!&quot; &lt;&lt;'\n';
</code></pre>
<p>Desweiteren gibt es wie von _matze und knivil bereits erwähnt noch die Möglichkeiten den Eingabstream zu manipulieren (zu leeren, Fehlerzustände aufzuheben, usw.)</p>
<p>Die seltsamen Ausgaben liegen daran, dass du deine beiden Variablen zahl1 und zahl2 nicht z.B. mit 0 initialisiert hast. Hättest du es getan, dann wäre auch schnell klar geworden, dass bei Eingabe von zu großen Zahlen überhaupt keine Änderung an den Variablen vorgenommen wird.</p>
<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21632">@knivil</a></strong><br />
Ob das zu &quot;undefiniertem Verhalten&quot; zu zählen ist kann man bewzweifeln. Ich behaupte nein. Alle Konstruktionen sind richtig angewendet und verhalten sich Standardkonform.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663304</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Fri, 13 Feb 2009 16:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Fri, 13 Feb 2009 16:15:56 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>[...]Das, was du da siehst, ist &quot;undefiniertes Verhalten&quot;. Verwende die Funktion richtig und du hast keine Probleme.</p>
</blockquote>
<p>Was soll an dem Verhalten undefiniert sein? Das Verhalten bei fehlerhafter Eingabe in einen istream ist wohldefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663309</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 13 Feb 2009 16:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Fri, 13 Feb 2009 18:28:24 GMT]]></title><description><![CDATA[<p>Schade! Dachte schon ich hab ne tolle Entdeckung gemacht!</p>
<p>@ Kritiker:</p>
<p>dann ist also die maximale Eingabestelle bei &quot;int&quot; wohl die 10.?</p>
<p>@ knivil tztz..immer diese unfreundlichen Leute in den Foren!<br />
Wenn ihr auch nur in Wirklichkeit so wärt! Internet heißt doch nich, dass man seinen Charakter gleich umkeheren muss, geschweige denn einfach raus zu motzen was so passt!</p>
<p>an alle anderen: Thx für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663386</guid><dc:creator><![CDATA[severin89-030]]></dc:creator><pubDate>Fri, 13 Feb 2009 18:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Fri, 13 Feb 2009 18:31:56 GMT]]></title><description><![CDATA[<p>severin89-030 schrieb:</p>
<blockquote>
<p>dann ist also die maximale Eingabestelle bei &quot;int&quot; wohl die 10.?</p>
</blockquote>
<p>Es geht nicht um die Stelle, sondern die Anzahl bit, die ein int hat. (und das war auch das, was knivil gemeint hat..)</p>
<p><a href="http://www.google.ch/search?q=2%5E32&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a" rel="nofollow">http://www.google.ch/search?q=2^32&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f1e9-1f1ea.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--germany"
      title=":de:"
      alt="🇩🇪"
    />official&amp;client=firefox-a</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663390</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 13 Feb 2009 18:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to interessanter Fehler ! Overflow? on Fri, 13 Feb 2009 19:28:18 GMT]]></title><description><![CDATA[<p>severin89-030 schrieb:</p>
<blockquote>
<p>Schade! Dachte schon ich hab ne tolle Entdeckung gemacht!</p>
</blockquote>
<p>Lass dich durch diesen kleinen Rückschlag in deinem Forscherdrang nicht entmutigen. <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>severin89-030 schrieb:</p>
<blockquote>
<p>dann ist also die maximale Eingabestelle bei &quot;int&quot; wohl die 10.?</p>
</blockquote>
<p>Auch eine 10-stellige Eingabe kann für int schon zu viel sein. In welchem Bereich sich die Zahl bewegen darf kannst du z.B. mit Hilfe der Headerdatei <strong>limits</strong> herausfinden.</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;limits&gt;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;unsigned int min: &quot; &lt;&lt; numeric_limits&lt;unsigned int&gt;::min() &lt;&lt; endl;
    cout &lt;&lt; &quot;unsigned int max: &quot; &lt;&lt; numeric_limits&lt;unsigned int&gt;::max() &lt;&lt; endl;

    cout &lt;&lt; &quot;int min: &quot; &lt;&lt; numeric_limits&lt;int&gt;::min() &lt;&lt; endl;
    cout &lt;&lt; &quot;int max: &quot; &lt;&lt; numeric_limits&lt;int&gt;::max() &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>2<sup>32</sup> ist eben (bei einem 32-Bit-Datenwort) nur für <strong>unsigned int</strong> das Maximum. Für <strong>int</strong> kommen noch die negativen Zahlen hinzu was dazu führt, dass das Maximum ca. halbiert wird.</p>
<p>Gibst du bei</p>
<pre><code class="language-cpp">cin &gt;&gt; zahl1
</code></pre>
<p>etwas größeres als</p>
<pre><code class="language-cpp">numeric_limits&lt;int&gt;::max()
</code></pre>
<p>ein ist das ein Fehler und zahl1 wird nicht verändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663427</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Fri, 13 Feb 2009 19:28:18 GMT</pubDate></item></channel></rss>