<?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[Präfix&#x2F;Postfix - Anfängerproblem]]></title><description><![CDATA[<p>Hallo miteinander</p>
<p>Kann mir bitte jemand helfen? Ich habe soeben mit ner Informatik-Ausbildung begonnen, bin aber direkt ins 2. Semester eingestiegen und muss deshalb ziemlich schnell C++ nachholen. Ich habe mir also auch gleich ein Buch besorgt und schlage mich jetzt damit herum.</p>
<p>Eine Beispiel im Buch lautet:</p>
<p>**// drei ganzzahlige Variablen deklarieren<br />
int n1, n2, n3;</p>
<p>// n1 und n2 haben beide den Wert 6<br />
n1 = 5;<br />
n2 = ++n1;</p>
<p>// n1 hat den Wert 6; n3 hat den Wert 5<br />
n1 = 5;<br />
n3 = n1++;**</p>
<p>WIESO?????? Wenn ich doch sage n1=5, kann doch nicht einfach 6 daraus werden?<br />
Dass n2 = 6, da n2 = ++n1 ist, ist mir schon klar, aber das andere...</p>
<p>Und weshalb ist n3 = 5 und nicht gleich 6???</p>
<p>Je länger ich mich damit rumschlage, desto weniger verstehe ich noch davon. Ich wäre euch echt dankbar, wenn ihr mir bei der Lösung meines Problem behilflich sein könntet.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124617/präfix-postfix-anfängerproblem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 03:29:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124617.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Oct 2005 12:50:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Sat, 29 Oct 2005 12:50:26 GMT]]></title><description><![CDATA[<p>Hallo miteinander</p>
<p>Kann mir bitte jemand helfen? Ich habe soeben mit ner Informatik-Ausbildung begonnen, bin aber direkt ins 2. Semester eingestiegen und muss deshalb ziemlich schnell C++ nachholen. Ich habe mir also auch gleich ein Buch besorgt und schlage mich jetzt damit herum.</p>
<p>Eine Beispiel im Buch lautet:</p>
<p>**// drei ganzzahlige Variablen deklarieren<br />
int n1, n2, n3;</p>
<p>// n1 und n2 haben beide den Wert 6<br />
n1 = 5;<br />
n2 = ++n1;</p>
<p>// n1 hat den Wert 6; n3 hat den Wert 5<br />
n1 = 5;<br />
n3 = n1++;**</p>
<p>WIESO?????? Wenn ich doch sage n1=5, kann doch nicht einfach 6 daraus werden?<br />
Dass n2 = 6, da n2 = ++n1 ist, ist mir schon klar, aber das andere...</p>
<p>Und weshalb ist n3 = 5 und nicht gleich 6???</p>
<p>Je länger ich mich damit rumschlage, desto weniger verstehe ich noch davon. Ich wäre euch echt dankbar, wenn ihr mir bei der Lösung meines Problem behilflich sein könntet.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903363</guid><dc:creator><![CDATA[nemico]]></dc:creator><pubDate>Sat, 29 Oct 2005 12:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Sat, 29 Oct 2005 12:56:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// n1 und n2 haben beide den Wert 6
n1 = 5;
n2 = ++n1;
</code></pre>
<p>Zuerst wird der Wert von n1 inkrementiert (=6). Anschliessend wird der Wert von<br />
n1 (6) an n2 zugewiesen.</p>
<pre><code class="language-cpp">// n1 hat den Wert 6; n3 hat den Wert 5
n1 = 5;
n3 = n1++;
</code></pre>
<p>Zuerst wird er Wert von n1 (5) an n2 zugewiesen. Anschliessend wird der Wert von<br />
n1 inkrementiert (=6).</p>
<p>Das sollte eigenlich in jedem vernünftigen Lehrbuch verständlich erklärt sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903368</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sat, 29 Oct 2005 12:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Sat, 29 Oct 2005 12:58:57 GMT]]></title><description><![CDATA[<p>So arbeiten nunmal die Prä/Postfix-operatoren:</p>
<pre><code class="language-cpp">x++;
</code></pre>
<p>erhöht den Wert von x und liefert den <em>alten</em> Wert zurück.</p>
<pre><code class="language-cpp">++x;
</code></pre>
<p>erhöht den Wert von x und liefert den <em>neuen</em> Wert zurück.</p>
<p>(und die Zuweisung &quot;y = Ausdruck&quot; speichert jeweils den Wert, den &quot;Ausdruck&quot; zurückliefert, in der Variablen &quot;y&quot;)</p>
<p>Lang ausgeschrieben kannst du es auch auffassen als:</p>
<pre><code class="language-cpp">n2=++n1; =&gt; ++n1;n2=n1;
n3=n1++; =&gt; n3=n1;n1++;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/903369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903369</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 29 Oct 2005 12:58:57 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Sat, 29 Oct 2005 13:55:13 GMT]]></title><description><![CDATA[<p>Redhead schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// n1 und n2 haben beide den Wert 6
n1 = 5;
n2 = ++n1;
</code></pre>
<p>Zuerst wird der Wert von n1 inkrementiert (=6). Anschliessend wird der Wert von<br />
n1 (6) an n2 zugewiesen.</p>
</blockquote>
<p>Wenn der Wert von n1 inkrementiert wird, wird daraus 6. Das ist klar, aber oben ist doch ganz klar angegeben, n1=5!!! Weshalb wird daraus rückwirkend einfach ne 6 gemacht?<br />
Es heisst doch n2 = ++n1 bwz n2 ist gleich 1+5 --&gt; n2 = 6, aber n1 wird doch dadurch nicht verändert, oder etwa doch?</p>
<p>Redhead schrieb:</p>
<blockquote>
<pre><code class="language-cpp">[cpp]// n1 hat den Wert 6; n3 hat den Wert 5
n1 = 5;
n3 = n1++;
</code></pre>
<p>Zuerst wird er Wert von n1 (5) an n2 zugewiesen. Anschliessend wird der Wert von<br />
n1 inkrementiert (=6).</p>
<p>Das sollte eigenlich in jedem vernünftigen Lehrbuch verständlich erklärt sein.</p>
</blockquote>
<p>Entweder ich bin echt einfach zu blöd, oder in meinem Buch (C++ für Dummies) ist das nicht richtig erklärt...</p>
<p>Ich sehe einfach nicht ein, weshalb denn n3 den Wert 5 haben sollte und das ist ja vorgegeben:</p>
<p>// n1 hat den Wert <strong>6</strong>; n3 hat den Wert <strong>5</strong><br />
n1 = 5;<br />
n3 = n1++;</p>
<p>Wenn jetzt also zuerst der Wert von n1 an n3 zugewiesen wird (=5) und dann inkrementiert wird, dann würde doch daraus 6 entstehen und oben (bei //) steht ja, n3 hat den Wert 5</p>
<p>könnt ihr mir nochmsl ein paar Zeilen schriben??</p>
<p>Ich bin euch für euere Hilfe echt dankbar!!!!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903403</guid><dc:creator><![CDATA[nemico]]></dc:creator><pubDate>Sat, 29 Oct 2005 13:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Sat, 29 Oct 2005 13:59:25 GMT]]></title><description><![CDATA[<p>Die Kommentare dort geben jeweils an, was unten herauskommen soll(te) <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>[cpp]// n1 hat den Wert <strong>6</strong>; n3 hat den Wert <strong>5</strong><br />
n1 = 5;<br />
n3 = n1++;[/cpp]</p>
<p>Wenn jetzt also zuerst der Wert von n1 an n3 zugewiesen wird (=5) und dann inkrementiert wird, dann würde doch daraus 6 entstehen und oben (bei //) steht ja, n3 hat den Wert 5</p>
</blockquote>
<p>n1 wird erhöht, n3 nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903404</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 29 Oct 2005 13:59:25 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Sat, 29 Oct 2005 14:52:32 GMT]]></title><description><![CDATA[<p>Ach so, die Kommentare haben mich völlig in die Irre geführt^^ Die sollten besser unten stehen...</p>
<p>Aber ich habe auch ein kleines Problem. Ich dachte immer:</p>
<pre><code class="language-cpp">int a = 5;
cout &lt;&lt; a++;
// a = 5
cout &lt;&lt; a;
// a = 6;
</code></pre>
<p>dass die Variable beim ersten &quot;benutzen&quot; noch den alten Wert 5 hat und beim 2. &quot;Benutzen&quot; dann erhöht wird. Aber anscheinend hat das auch was mit den Zeilen oder so in der Art zu tun, denn</p>
<pre><code class="language-cpp">int a = 5;
cout &lt;&lt; a++ &lt;&lt; endl &lt;&lt; a;
</code></pre>
<p>ergibt beides 5! <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=":/"
      alt="😕"
    /><br />
Erst bei</p>
<pre><code class="language-cpp">int a = 5;
cout &lt;&lt; a++ &lt;&lt; endl;
cout &lt;&lt; a;
</code></pre>
<p>ist die Ausgabe dann 5 und 6. <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>Wie wann genau werden die Variablen denn immer inkrementiert und wann noch nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903414</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sat, 29 Oct 2005 14:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Sat, 29 Oct 2005 14:17:55 GMT]]></title><description><![CDATA[<p>hmmm, so langsam komme ich der ganzen Sache auf die Schliche.</p>
<p>Ich danke euch jedenfalls ganz herzlich für euere Hilfe!<br />
Das ist echt super von euch!!!</p>
<p>Bis bald (<strong>bestimmt!!!</strong>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/903416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/903416</guid><dc:creator><![CDATA[Nemico]]></dc:creator><pubDate>Sat, 29 Oct 2005 14:17:55 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Tue, 01 Nov 2005 08:28:40 GMT]]></title><description><![CDATA[<p>milo51 schrieb:</p>
<blockquote>
<p>Ach so, die Kommentare haben mich völlig in die Irre geführt^^ Die sollten besser unten stehen...</p>
<p>Aber ich habe auch ein kleines Problem. Ich dachte immer:</p>
<pre><code class="language-cpp">int a = 5;
cout &lt;&lt; a++;
// a = 5
cout &lt;&lt; a;
// a = 6;
</code></pre>
<p>dass die Variable beim ersten &quot;benutzen&quot; noch den alten Wert 5 hat und beim 2. &quot;Benutzen&quot; dann erhöht wird. Aber anscheinend hat das auch was mit den Zeilen oder so in der Art zu tun, denn</p>
</blockquote>
<p>Die wird nicht beim zweiten Benutzen erhöht, sondern direkt nach dem ersten Benutzen.</p>
<p>Zu deinem Cout-Beispiel: Der Standard legt nicht fest, in welcher Reihenfolge Nebeneffekte auftreten MÜSSEN, er definiert lediglich einige Synchronisationspunkte dazu (an einem Synch-Punkt ist sicher, daß alle vorigen Nebeneffeckte abgearbeitet sind und alle später kommenden Nebeneffekte noch nicht eingetreten sind). Das Semikolon ist ein Synch-Punkt, der Shift-Operator (&lt;&lt;) ist allerdings keiner.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905442</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 01 Nov 2005 08:28:40 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Tue, 01 Nov 2005 14:51:46 GMT]]></title><description><![CDATA[<p>Ach so alles klar danke.<br />
Hmm...</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; 2; i++)
     {
          ;
          cout &lt;&lt; i &lt;&lt; endl;
          cout &lt;&lt; i &lt;&lt; endl;
     }
</code></pre>
<p>Ausgabe: 0<br />
0<br />
1<br />
1</p>
<p>Komisch, nach der ersten Ausgabe habe ich doch einen Synch-Punkt, dann müsste doch erst 0 und dann 1 ausgegeben werden.<br />
Oder wird beim ersten Schleifendurchgang tatsächlich nur die Initialisierung und die Bedingung durchgeführt und erst bei den weiteren Durchläufen auch die Inkrementierung?<br />
Aber dann müsste der letzte Wert doch eine 2 sein...<br />
Versteh ich nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905769</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Tue, 01 Nov 2005 14:51:46 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Tue, 01 Nov 2005 16:02:11 GMT]]></title><description><![CDATA[<p>edit: ahh ok das mit dem ; wusst ich noch nicht ( hab den Post oben nicht gelesen )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905819</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Tue, 01 Nov 2005 16:02:11 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Wed, 02 Nov 2005 10:01:49 GMT]]></title><description><![CDATA[<p>die for-Schleife kannst du in eine while-Schleife umwandeln:</p>
<pre><code class="language-cpp">for( init ; test ; inc )
  command;

init;
while( test )
{
  command;
  inc;
}
</code></pre>
<p>d.h. der Erhöhungsschritt erfolgt jeweils am Ende der Schleife. Und wenn die Abbruchbedingung erfüllt ist, geht er nicht wieder rein.</p>
<p>(btw: Und die Synchronisationspunkte sind nur dann wichtig, wenn in einem Ausdruck mehrere Nebeneffekte auftreten können, z.B. &quot;a = b++ + c--;&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/906264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/906264</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 02 Nov 2005 10:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Wed, 02 Nov 2005 13:28:57 GMT]]></title><description><![CDATA[<p>Ah stimmt ok. For-Schleife verstanden</p>
<p>Und was genau meinst du mit Nebeneffekt?<br />
Und was meinst du mit, die Synch-Punkt sind nur dann &quot;wichtig&quot;? Wichtig zu beachten oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/906425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/906425</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Wed, 02 Nov 2005 13:28:57 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Wed, 02 Nov 2005 13:38:07 GMT]]></title><description><![CDATA[<p>Nebeneffekt ist alles, was den Inhalt einer Variablen beeinflussen kann - das betrifft hauptsächlich Inkrement, Dekrement, Zuweisungsoperatoren und Funktionsaufrufe (letztere sind besonders gemein, wenn die Funktion auf globale Variablen zugreift).<br />
Und die Synchronisationspunkte sind insofern wichtig, indem sie einschränken, wann und wie welche Nebeneffekte ausgeführt wurden - du solltest zwischen zwei Synch-Punkten nur einmal deine Variable ändern, sonst endest du in undefiniertem Verhalten (z.B. ist nicht definiert, wes bei &quot;a = b++ + b--;&quot; herauskommt, weil hier zwei Nebeneffekte parallel auf b wirken). Und du solltest eine Variable nicht lesen, wenn die Ausführung der Nebeneffekte ungesichert ist (d.h. selbst der Ausdruck &quot;a = b++ * b;&quot; ist schon undefiniert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/906438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/906438</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 02 Nov 2005 13:38:07 GMT</pubDate></item><item><title><![CDATA[Reply to Präfix&#x2F;Postfix - Anfängerproblem on Wed, 02 Nov 2005 14:12:42 GMT]]></title><description><![CDATA[<p>Ach so jo, k danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/906471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/906471</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Wed, 02 Nov 2005 14:12:42 GMT</pubDate></item></channel></rss>