<?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[Postinkrementoperator bei If-Anweisung]]></title><description><![CDATA[<p>Hi</p>
<p>Ist bei</p>
<pre><code class="language-cpp">int a = 0;
int b;
if(!a++)
  b = a;
</code></pre>
<p>b null oder eins?<br />
Ich Postinkrementiere ja, aber wird das nach der If-Klammer oder nach der gesammten Anweisung gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278263/postinkrementoperator-bei-if-anweisung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 06:21:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278263.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Dec 2010 19:15:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 19:15:35 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ist bei</p>
<pre><code class="language-cpp">int a = 0;
int b;
if(!a++)
  b = a;
</code></pre>
<p>b null oder eins?<br />
Ich Postinkrementiere ja, aber wird das nach der If-Klammer oder nach der gesammten Anweisung gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989275</guid><dc:creator><![CDATA[X.DarkForce.X]]></dc:creator><pubDate>Thu, 02 Dec 2010 19:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 19:21:57 GMT]]></title><description><![CDATA[<p>Da es bekanntermassen einen erheblichen Aufwand erfordert, sowas selbst auszuprobieren: <code>b</code> ist <code>1</code> .</p>
<p>Der Post-Inkrement-Operator wird unmittelbar* angewandt, nur gibt der Ausdruck <code>a++</code> noch den alten Wert zurück.</p>
<p>_______<br />
* Am Ende des Ausdrucks muss die Operation ausgeführt sein. Wann es innerhalb genau passiert, ist implementierungsabhängig. Code, der sich diesbezüglich auf eine spezifische Reihenfolge verlässt, ist unportabel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989280</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 02 Dec 2010 19:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 19:22:08 GMT]]></title><description><![CDATA[<p>Das Ende der Bedingung ist ein Sequenzpunkt. b ist 1. Warum probierst du sowas nicht einfach aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989281</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 02 Dec 2010 19:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 19:48:25 GMT]]></title><description><![CDATA[<p>Wenn sowas Fragen aufwirft, sollte man den Code <em>umgehend</em> so umschreiben, dass er auf den <em>ersten Blick absolut eindeutig</em> ist. Denke an die Leute, die den Code nicht kennen und dann debuggen sollen! Oder Du selbst nach 3 Monaten... Unnötige Zeit, die bei jedem Code-Lesen neu aufgewendet werden muss. Völlig überflüssig.</p>
<p>Post- und Pre-Inkrementoren sollten daher am besten nur ganz für sich angewendet werden ( <code>++counter</code> ) oder da, wo es absolut üblich ist, z.B. in for-Schleifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989294</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Thu, 02 Dec 2010 19:48:25 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 19:50:37 GMT]]></title><description><![CDATA[<p>Was, bei ner Endlos-Schleife, bei welcher eine Array mit einem zu inkrementierenden Wert ausgelesen wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989296</guid><dc:creator><![CDATA[X.DarkForce.X]]></dc:creator><pubDate>Thu, 02 Dec 2010 19:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 19:53:45 GMT]]></title><description><![CDATA[<p>X.DarkForce.X schrieb:</p>
<blockquote>
<p>Was, bei ner Endlos-Schleife, bei welcher eine Array mit einem zu inkrementierenden Wert ausgelesen wird?</p>
</blockquote>
<p>Wie sieht denn der Code dazu aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989301</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Thu, 02 Dec 2010 19:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 19:56:11 GMT]]></title><description><![CDATA[<p>Ups! Mir ist grade eingefallen, ich könnt das mit dem SizeOf-Operator lösen...<br />
Ich hab mal wieder den Wald vor lauter Bäumen nicht gesehen.</p>
<p>Danke trozdem, dass ihr euch die Zeit genommen habt!<br />
MfG,<br />
X.DarkForce.X</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989302</guid><dc:creator><![CDATA[X.DarkForce.X]]></dc:creator><pubDate>Thu, 02 Dec 2010 19:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Thu, 02 Dec 2010 21:30:44 GMT]]></title><description><![CDATA[<p>Jo, <code>if (!a++)</code> ist ein ausreichender Grund für ein paar ordentliche Watschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989358</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 02 Dec 2010 21:30:44 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 00:04:02 GMT]]></title><description><![CDATA[<p>X.DarkForce.X schrieb:</p>
<blockquote>
<p>Ups! Mir ist grade eingefallen, ich könnt das mit dem SizeOf-Operator lösen</p>
</blockquote>
<pre><code class="language-cpp">int a = 0;
if( !sizeof(a) )
	b = ++a;
</code></pre>
<p>wäre mein Vorschlag.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989396</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Fri, 03 Dec 2010 00:04:02 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 01:06:12 GMT]]></title><description><![CDATA[<p>EOP schrieb:</p>
<blockquote>
<p>X.DarkForce.X schrieb:</p>
<blockquote>
<p>Ups! Mir ist grade eingefallen, ich könnt das mit dem SizeOf-Operator lösen</p>
</blockquote>
<pre><code class="language-cpp">int a = 0;
if( !sizeof(a) )
	b = ++a;
</code></pre>
<p>wäre mein Vorschlag.</p>
</blockquote>
<p>Wie kommt man denn von sizeof() auf a++?<br />
Ernstgemeinte Frage.....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989399</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 03 Dec 2010 01:06:12 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 01:17:30 GMT]]></title><description><![CDATA[<p>Nun, zu seiner Verteidigung sei gesagt dass einfach ausprobieren ist solchen Fällen ja unter Umständen gar nichtmal so einfach ist da es bei komplizierteren Ausdrücken gerne auch mal implementation-defined wird sodass einfaches ausprobieren einen nicht weiterbringt oder sogar total fehlgeleitete Schlüsse ziehen lässt <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/1989402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989402</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Fri, 03 Dec 2010 01:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 03:01:49 GMT]]></title><description><![CDATA[<p>Von Ausprobieren auf Allgemeingültigkeit zu schließen, ist gefährlich - ganz besonders, wenn es um Sequenzpunkte geht. Jürgen Wolf hat auf diese Weise ganze Bücher voller Blödsinn produziert.</p>
<p>Sequenzpunkte bestimmen die Reihenfolge, in der Programmteile ausgeführt werden. Einfachstes Beispiel:</p>
<pre><code class="language-cpp">foo();
/* Sequenzpunkt */
bar();
</code></pre>
<p>...so dass foo() vor bar() ausgeführt wird. Gibt es zwischen zwei Ausdrücken keinen Sequenzpunkt, <strong>so ist nicht definiert, in welcher Reihenfolge sie ausgeführt werden und wann ihre Nebeneffekte eintreten.</strong> Das ist wichtig - beispielsweise ist bei einem Funktionsaufruf nicht definiert, in welcher Reihenfolge die Parameter ausgewertet werden, und hätte ich</p>
<pre><code class="language-cpp">foo() + bar();
/* Sequenzpunkt */
</code></pre>
<p>geschrieben, wäre zwischen foo() und bar() kein Sequenzpunkt, sondern erst danach - ob zuerst foo() oder bar() ausgeführt wird, ist nicht definiert.</p>
<p>Ganz wild ist es mit ++ und -- - im obrigen Beispiel gibt es innerhalb von foo und bar Sequenzpunkte, so dass bei Auswertung des + zumindest klar ist, dass Nebeneffekte von foo() und bar() eingetreten sind, aber schreibst du</p>
<pre><code class="language-cpp">int a = 0;
int b = a++ + a++;
</code></pre>
<p>dann darf der Compiler daraus durchaus auch b == 0 machen. Es gibt keinen Sequenzpunkt im Ausdruck a++ + a++, also können die Nebeneffekte der a++-Ausdrücke, wenn es der Compiler so will, erst eintreten, nachdem der +-Operator bereits ausgewertet wurde.</p>
<p>Daraus ergibt sich in der Praxis, dass in der Kürze zwar Würze liegt, es aber wichtiger ist, sich klar auszudrücken.</p>
<p>Sequenzpunkte sind:</p>
<p>1. Der Aufruf einer Funktion, nachdem alle Parameter ausgewertet wurden. D.h.</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;

int a = 1;

void foo(int x) {
  printf(&quot;%d\n, a + x);
}

int main(void) {
  foo(a++);
  return 0;
}

/* Ausgabe:
 *
 * 3
 */
</code></pre>
<p>...da bei Funktionseintritt der Nebeneffekt von a++ in main eingetreten ist, dementsprechend darin a == 2, x == 1. Dagegen wäre bei</p>
<pre><code class="language-cpp">void foo(int x, int y) { }

/* ... */

foo(++a, ++a);
</code></pre>
<p>nicht definiert, welche Werte x und y in der Funktion haben.</p>
<p>2. Nach der Auswertung des ersten Arguments Operatoren &amp;&amp;, ||, ?: (ternär) und , (Komma). D.h.</p>
<pre><code class="language-cpp">int a = 0, b;

b = ++a &amp;&amp; a; /* b == 1 */

a = 0;
b = a++ || a; /* b == 1 */

a = 0;
b = a++ ? a : 2; /* b == 1 */

a = 0;
b = a++, a; /* b == 1*/
</code></pre>
<p>3. Das Ende eines full declarators, d.h.</p>
<pre><code class="language-cpp">int a = 0;
int b = a++;
int c = a; /* c == 1 */
</code></pre>
<p>Nicht definiert ist der Wert von s.b und s.c bei</p>
<pre><code class="language-cpp">int a = 0;
struct { int b, c; } s = { a++, a++ };
</code></pre>
<p>4. Das Ende eines vollständigen Ausdrucks, d.h. praktisch alle Semikola, die Bedingungen einer if- oder switch-Abfrage, einer while- bzw. do-Schleife, alle drei Terme im Kopf einer for-Schleife, und der Ausdruck in einem return-Statement. D.h.</p>
<pre><code class="language-cpp">a++;
/* Effekt hier eingetreten */

if(a++) {
  /* Effekt hier eingetreten */
}

switch(a++) {
default:
  /* Effekt hier eingetreten */
}

while(a++) {
  /* Effekt hier eingetreten, bei jedem Schleifendurchlauf */
}
/* Effekt hier eingetreten nach Schleifenende */

do {
  /* Effekt ab zweitem Schleifendurchlauf hier eingetreten,
     bei jedem Schleifendurchlauf*/
} while(a++);
/* Effekt hier eingetreten nach Schleifenende */

for(a++; b++; c++) {
  /* Effekt von a++ hier bei erstem Schleifeneintritt eingetreten. 
     Effekt von b++ bei jedem Schleifendurchlauf eingetreten
     Effekt von c++ ab dem zweiten Schleifendurchlauf bei jedem
                    Schleifendurchlauf eingetreten
   */
}
/* Effekt des letzten c++ und b++ nach Schleifenende eingetreten */
</code></pre>
<p>Für return fällt mir gerade kein Beispiel ein, aber wenn es da mal Zweifel geben sollte, kannst du dich darauf verlassen, dass der Ausdruck, den du zurückgibst, ausgewertet wird und alle seine Nebeneffekte eingetreten sind, bevor er zurückgegeben wird.</p>
<p>5. Direkt bevor eine Funktion der Standardbibliothek zurückkehrt.</p>
<p>6. Nach der Verarbeitung von Umwandlungsspezifikatoren (gemeint sind *printf und *scanf).</p>
<p>7. Direkt vor und nach jedem Aufruf einer an qsort oder bsearch übergebenen Vergleichsfunktion.</p>
<p>Bei den letzten drei handelt es sich wohl um Einschränkungen für Compiler- und Standardbibliotheksentwickler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989403</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Fri, 03 Dec 2010 03:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 04:48:52 GMT]]></title><description><![CDATA[<p>diese sequenzpunkte liegen imho in c/c++ an der falschen stelle und führen zu total unerwarteten ergebnissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989404</guid><dc:creator><![CDATA[__--]]></dc:creator><pubDate>Fri, 03 Dec 2010 04:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 13:09:48 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Nicht definiert ist der Wert von s.b und s.c bei</p>
<pre><code class="language-cpp">int a = 0;
struct { int b, c; } s = { a++, a++ };
</code></pre>
</blockquote>
<p>Das sollte eigentlich definiert sein. Jedenfalls sehe ich keinen signifikanten Unterschied zu</p>
<pre><code class="language-cpp">int a = 0;
int b = a++, c = a++;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1989519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989519</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 03 Dec 2010 13:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 13:24:26 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Sequenzpunkte sind: [...]</p>
</blockquote>
<p>Schön, mal einen ausführlichen Überblick zu haben. Punkt 6-7 kannte ich nicht, wie ist Punkt 5 zu verstehen? Der Aufrufer der Standardbibliotheksfunktion kann sich ja teilweise nicht auf die Aufrufreihenfolge verlassen, was bringt also ein Sequenzpunkt im aufrufenden Ausdruck?</p>
<p>__-- schrieb:</p>
<blockquote>
<p>diese sequenzpunkte liegen imho in c/c++ an der falschen stelle und führen zu total unerwarteten ergebnissen.</p>
</blockquote>
<p>Wenn dein Beitrag nicht als Getrolle aufgefasst werden soll, musst du schon etwas konkreter werden. Was findest du denn &quot;total unerwartet&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989528</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 03 Dec 2010 13:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 13:47:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>__-- schrieb:</p>
<blockquote>
<p>diese sequenzpunkte liegen imho in c/c++ an der falschen stelle und führen zu total unerwarteten ergebnissen.</p>
</blockquote>
<p>Wenn dein Beitrag nicht als Getrolle aufgefasst werden soll, musst du schon etwas konkreter werden. Was findest du denn &quot;total unerwartet&quot;?</p>
</blockquote>
<p>Dieser __-- ist nur ein ungebildeter C-Troll. Einfach ignorieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989539</guid><dc:creator><![CDATA[KennerDerDurchschnittlich]]></dc:creator><pubDate>Fri, 03 Dec 2010 13:47:59 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 14:44:21 GMT]]></title><description><![CDATA[<p>Also wenn ich mir diese Liste hier ansehe, dann ist die Reihenfolge und somit die Nebeneffekte sehr Wohl definiert. Oder meinst du etwas anderes?</p>
<p><a href="http://www.highscore.de/cpp/einfuehrung/operatoren.html#pr%C3%A4zedenztabelle" rel="nofollow">http://www.highscore.de/cpp/einfuehrung/operatoren.html#präzedenztabelle</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989563</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Fri, 03 Dec 2010 14:44:21 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 14:59:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int a = 0; 
int b = 0;
if(a++ || b--) 
   b = a;

std::cout &lt;&lt; a &lt;&lt; &quot;\n&quot;;
std::cout &lt;&lt; b &lt;&lt; &quot;\n&quot;;

if(a++ &amp;&amp; b--)
   b = 15;

std::cout &lt;&lt; a &lt;&lt; &quot;\n&quot;;
std::cout &lt;&lt; b &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>Ist das Ergebnis definiert oder undefiniert?<br />
Ich bekomme: 1, -1, 2, 15</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989573</guid><dc:creator><![CDATA[WirklichSchlechterCode]]></dc:creator><pubDate>Fri, 03 Dec 2010 14:59:45 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 15:08:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int a = 0;
int b = 0;
if(a++ || b--)		// a == 0 || b == 0; a++, b--
   b = a;		// wird ignoriert, da false or false == false

std::cout &lt;&lt; a &lt;&lt; &quot;\n&quot;;	//	a == 1
std::cout &lt;&lt; b &lt;&lt; &quot;\n&quot;;	//	b == -1

if(a++ &amp;&amp; b--)		// a == 1 &amp;&amp; b == -1; a++, b--
   b = 15;		// da true &amp;&amp; true == true

std::cout &lt;&lt; a &lt;&lt; &quot;\n&quot;;	//	a == 2
std::cout &lt;&lt; b &lt;&lt; &quot;\n&quot;	//	b == 15
</code></pre>
<p>Und damit definiert. Wobei der Code auch noch gut zu lesen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989576</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Fri, 03 Dec 2010 15:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 15:44:22 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Und damit definiert. Wobei der Code auch noch gut zu lesen ist.</p>
</blockquote>
<p>edit: Siehe unten. <s>Es ist nicht deswegen definiert. Auch bei undefiniertem Verhalten bekommt man irgendein Ergebnis. Aber es kann von Compiler zu Compiler unterschiedlich sein.</s></p>
<p>Ein Beispiel dafür wäre</p>
<pre><code class="language-cpp">void foo(int a, int b)
{
 cout&lt;&lt;a&lt;&lt;b;
}

//...

int i=1;
foo(i++,i++);
</code></pre>
<p>12 oder 21?</p>
<p>Das Ergebnis des Beispiels von WirklichSchlechterCode ist aber soweit ich das sehe vollständig definiert, da || und &amp;&amp; als Sequenzpunkte fungieren und zudem die Reihenfolge der Auswertung (bzw. Nichtauswertung) bei diesen Operatoren genau festgelegt ist.</p>
<p>edit: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/797">@Nick</a> Unbekannt: Im zweiten Lesen merke ich, ich habe dich missverstanden. Du meintest das gleiche wie ich, warum der Code definiertes Verhalten zeigt. Vergiss daher meine Eingangsbemerkung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989581</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 03 Dec 2010 15:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 16:14:14 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Also wenn ich mir diese Liste hier ansehe, dann ist die Reihenfolge und somit die Nebeneffekte sehr Wohl definiert. Oder meinst du etwas anderes?</p>
<p><a href="http://www.highscore.de/cpp/einfuehrung/operatoren.html#pr%C3%A4zedenztabelle" rel="nofollow">http://www.highscore.de/cpp/einfuehrung/operatoren.html#präzedenztabelle</a></p>
</blockquote>
<p>Andere Baustelle, die Vorrangregeln sagen nichts über die Abarbeitungsreihenfolge aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989593</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 03 Dec 2010 16:14:14 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 16:48:19 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>12 oder 21?</p>
</blockquote>
<p>Sollte auch definiert sein.<br />
<a href="http://en.wikipedia.org/wiki/X86_calling_conventions" rel="nofollow">http://en.wikipedia.org/wiki/X86_calling_conventions</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989602</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Fri, 03 Dec 2010 16:48:19 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Fri, 03 Dec 2010 17:33:44 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Sollte auch definiert sein.<br />
<a href="http://en.wikipedia.org/wiki/X86_calling_conventions" rel="nofollow">http://en.wikipedia.org/wiki/X86_calling_conventions</a></p>
</blockquote>
<p>Das hat damit nichts zu tun (davon abgesehen, dass auch unterschiedliche Calling-Conventions verwendet werden können). Es ist <em>implementation-defined</em>, in welcher Reihenfolge die Inkrementierungen abgearbeitet werden.</p>
<p>Deshalb gibt es auch auf der <a href="http://www.boost.org/doc/libs/1_45_0/libs/smart_ptr/shared_ptr.htm" rel="nofollow">Seite von <code>boost::shared_ptr</code> </a>einen Hinweis unter &quot;Best Practices&quot; im Bezug auf temporäre <code>shared_ptr</code> -Objekte als Funktionsargumente.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989617</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 03 Dec 2010 17:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Postinkrementoperator bei If-Anweisung on Mon, 06 Dec 2010 20:32:56 GMT]]></title><description><![CDATA[<p>Vielen vielen herzlichen Dank für all die guten Beiträge! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Vorallem der von seldon war klasse!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1990731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1990731</guid><dc:creator><![CDATA[X.DarkForce.X]]></dc:creator><pubDate>Mon, 06 Dec 2010 20:32:56 GMT</pubDate></item></channel></rss>