<?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[Merkwürdiges Verhalten bei Überlauf.  Unterschied x+1 &#x2F; ++x]]></title><description><![CDATA[<p>Hallo Leute,</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;climits&gt;

using namespace std;

int main(){

	long x(LONG_MAX);

	cout &lt;&lt; &quot;LONG_MAX ist: &quot; &lt;&lt; x &lt;&lt; &quot;\tLONG_MAX ++ ist: &quot; &lt;&lt; ([b]x+1[/b]) &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Der Code soll einen Ãœberlauf provozieren. Tut er auch wie er soll; Ausgabe: +2147483647 und -2147483648</p>
<pre><code>cout &lt;&lt; &quot;LONG_MAX ist: &quot; &lt;&lt; x &lt;&lt; &quot;\tLONG_MAX ++ ist: &quot; &lt;&lt; ([b]++x[/b]) &lt;&lt; endl;
</code></pre>
<p>nun erhält man zwei negative Werte (?).<br />
Versteh ich nicht, wie kommt es das hier ein Unterschied zwischen x+1 und ++x besteht ??</p>
<pre><code>cout &lt;&lt; &quot;LONG_MAX ist: &quot; &lt;&lt; x &lt;&lt; &quot;\tLONG_MAX ++ ist: &quot; &lt;&lt; ([b]x++[/b]) &lt;&lt; endl;
</code></pre>
<p>und bei x++ ist das Verhalten nochmal unerwartet: hier ist die Ausgabe -2147483648 und +2147483647 <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="😕"
    /></p>
<p>Jetzt dachte ich es liegt vielleicht daran das die Variable mit einer Konstanten initialisiert wurde,<br />
aber auch wenn das Limit als Zahl angegeben wird tritt das Verhalten auf.</p>
<p>und das Verhalten tritt auch auf wenn x mit einer Zahl initialisiert wird die ausreichend unterhalb des Limit ist z.B. 2147483638...</p>
<p>Hat jemand eine Idee wie das kommt?<br />
Danke im Voraus<br />
S.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243113/merkwürdiges-verhalten-bei-überlauf-unterschied-x-1-x</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 16:31:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243113.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Jun 2009 14:42:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Merkwürdiges Verhalten bei Überlauf.  Unterschied x+1 &#x2F; ++x on Fri, 12 Jun 2009 14:42:41 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;climits&gt;

using namespace std;

int main(){

	long x(LONG_MAX);

	cout &lt;&lt; &quot;LONG_MAX ist: &quot; &lt;&lt; x &lt;&lt; &quot;\tLONG_MAX ++ ist: &quot; &lt;&lt; ([b]x+1[/b]) &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Der Code soll einen Ãœberlauf provozieren. Tut er auch wie er soll; Ausgabe: +2147483647 und -2147483648</p>
<pre><code>cout &lt;&lt; &quot;LONG_MAX ist: &quot; &lt;&lt; x &lt;&lt; &quot;\tLONG_MAX ++ ist: &quot; &lt;&lt; ([b]++x[/b]) &lt;&lt; endl;
</code></pre>
<p>nun erhält man zwei negative Werte (?).<br />
Versteh ich nicht, wie kommt es das hier ein Unterschied zwischen x+1 und ++x besteht ??</p>
<pre><code>cout &lt;&lt; &quot;LONG_MAX ist: &quot; &lt;&lt; x &lt;&lt; &quot;\tLONG_MAX ++ ist: &quot; &lt;&lt; ([b]x++[/b]) &lt;&lt; endl;
</code></pre>
<p>und bei x++ ist das Verhalten nochmal unerwartet: hier ist die Ausgabe -2147483648 und +2147483647 <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="😕"
    /></p>
<p>Jetzt dachte ich es liegt vielleicht daran das die Variable mit einer Konstanten initialisiert wurde,<br />
aber auch wenn das Limit als Zahl angegeben wird tritt das Verhalten auf.</p>
<p>und das Verhalten tritt auch auf wenn x mit einer Zahl initialisiert wird die ausreichend unterhalb des Limit ist z.B. 2147483638...</p>
<p>Hat jemand eine Idee wie das kommt?<br />
Danke im Voraus<br />
S.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725622</guid><dc:creator><![CDATA[Spacepilot]]></dc:creator><pubDate>Fri, 12 Jun 2009 14:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten bei Überlauf.  Unterschied x+1 &#x2F; ++x on Fri, 12 Jun 2009 14:48:13 GMT]]></title><description><![CDATA[<blockquote>
<p>nun erhält man zwei negative Werte (?) [...] und bei x++ ist das Verhalten nochmal unerwartet:</p>
</blockquote>
<p>Das hatten wir doch letztens erst in mehreren Threads ...</p>
<p>Zum Beispiel:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-242991.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-242991.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-242967.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-242967.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725625</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 12 Jun 2009 14:48:13 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten bei Überlauf.  Unterschied x+1 &#x2F; ++x on Fri, 12 Jun 2009 14:47:22 GMT]]></title><description><![CDATA[<p>Jopp - das Verhalten ist undefiniert - hatten wir in den letzten 2 Tagen 2mal, das Thema...</p>
<p>Thread-Titel waren</p>
<p>&quot;Dekrement&quot;<br />
bzw<br />
&quot;Inkrement / Dekrement&quot;<br />
glaube ich ^^</p>
<p>kannst ja mal danach suchen - im erstgenannten steht auch genau, warum...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725627</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 12 Jun 2009 14:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten bei Überlauf.  Unterschied x+1 &#x2F; ++x on Fri, 12 Jun 2009 15:41:16 GMT]]></title><description><![CDATA[<p>ja, den ersten hatte ich nicht gesehen..</p>
<blockquote>
<p>und das Verhalten tritt auch auf wenn x mit einer Zahl initialisiert wird die ausreichend unterhalb des Limit ist z.B. 2147483638...</p>
</blockquote>
<p>nicht ganz.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> Der Term wird von rechts nach links abgearbeitet...<br />
dann ist das Verhalten stimmig.</p>
<p>und sagt mal, wie ist das nun, die Reihenfolge bei Verwendung von cout ist die nun festgelegt oder nciht?</p>
<p>Thanks!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725654</guid><dc:creator><![CDATA[Spacepilot]]></dc:creator><pubDate>Fri, 12 Jun 2009 15:41:16 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten bei Überlauf.  Unterschied x+1 &#x2F; ++x on Fri, 12 Jun 2009 17:16:59 GMT]]></title><description><![CDATA[<p>Spacepilot schrieb:</p>
<blockquote>
<p>und sagt mal, wie ist das nun, die Reihenfolge bei Verwendung von cout ist die nun festgelegt oder nciht?</p>
<p>Thanks!</p>
</blockquote>
<p>Das hat nichts mit <code>std::cout</code> oder der Operator-Priorität zu tun. Der Compiler darf seine Operanden in der Reihenfolge auswerten, die ihm am besten passt - er muss den Ausdruck anschliessend nur so zusammenfügen, dass er der geforderten Programmlogik entspricht.</p>
<p>Und die Programmlogik ist eben so lange definiert, wie du dich an die Regeln hältst. Sobald zwischen zwei Sequenzpunkten mehrmals auf eine Variable zugegriffen wird, die in diesem Ausdruck verändert wird, ist das Verhalten undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725704</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 12 Jun 2009 17:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten bei Überlauf.  Unterschied x+1 &#x2F; ++x on Sat, 13 Jun 2009 10:37:07 GMT]]></title><description><![CDATA[<p>ahh, ja, danke!<br />
wer lesen kann ist klar im Vorteil..</p>
<blockquote>
<p>Tatsache ist, auf eine Variable darf zwischen zwei Sequenzpunkten (dazu gehören zum Beispiel die Operatoren &amp;&amp;, || und ,) nicht mehrfach zugegriffen werden, wenn sie in dieser Zeit verändert wird.</p>
</blockquote>
<p>Gruß S.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725919</guid><dc:creator><![CDATA[Spacepilot]]></dc:creator><pubDate>Sat, 13 Jun 2009 10:37:07 GMT</pubDate></item></channel></rss>