<?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[if anweisung]]></title><description><![CDATA[<p>Hallo,<br />
ich lese mir gerade das buch &quot;der programmierer&quot; durch und bin auf ein problem gestoßen.</p>
<p>undzwar</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

int main()
{
int i = 0, j = 2; 
if(i++ &amp;&amp; j++) { // ab dem zeitpunkt müsste doch i = 1 und j = 3 sein
    i++;         // und hier i = 2 und j = 3

}
cout &lt;&lt; i &lt;&lt; j;

}
</code></pre>
<p>das ergebnis dieses codes ist 1 2 und das verstehe ich nicht.<br />
es wird von links nach rechts gelesen dh erst wird i++ ausgeführt, wenn das geht wird j++ ausgeführt und wenn beides ging wird nochmal i++, ausgeführt.</p>
<p>Ich meine das programm müsste 2 3 ausgeben, was es aber nicht tut.</p>
<p>wenn i = 1 und j = 2 ist wird 3 3 ausgeben, was ich nachvollziehen kann.</p>
<p>wo liegt mein denkfehler ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279581/if-anweisung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 12:16:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279581.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Dec 2010 19:47:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 19:50:40 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich lese mir gerade das buch &quot;der programmierer&quot; durch und bin auf ein problem gestoßen.</p>
<p>undzwar</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

int main()
{
int i = 0, j = 2; 
if(i++ &amp;&amp; j++) { // ab dem zeitpunkt müsste doch i = 1 und j = 3 sein
    i++;         // und hier i = 2 und j = 3

}
cout &lt;&lt; i &lt;&lt; j;

}
</code></pre>
<p>das ergebnis dieses codes ist 1 2 und das verstehe ich nicht.<br />
es wird von links nach rechts gelesen dh erst wird i++ ausgeführt, wenn das geht wird j++ ausgeführt und wenn beides ging wird nochmal i++, ausgeführt.</p>
<p>Ich meine das programm müsste 2 3 ausgeben, was es aber nicht tut.</p>
<p>wenn i = 1 und j = 2 ist wird 3 3 ausgeben, was ich nachvollziehen kann.</p>
<p>wo liegt mein denkfehler ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title="=("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000144</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 29 Dec 2010 19:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 19:50:50 GMT]]></title><description><![CDATA[<p>Was meinst Du mit &quot;wenn das geht&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000145</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Wed, 29 Dec 2010 19:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 19:53:50 GMT]]></title><description><![CDATA[<p>damit meine ich wenn beide anweisungen im if schleifenkopf true sind wird die if answeisung i++; ausgeführt oder nicht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000147</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 29 Dec 2010 19:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 19:57:18 GMT]]></title><description><![CDATA[<p>Richtig. Die erste ist aber false.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000149</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Wed, 29 Dec 2010 19:57:18 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:02:22 GMT]]></title><description><![CDATA[<p>du meinst i++ im schleifenkopf ist false weil i = 0 ist ?</p>
<p>aber warum wird dann i 1 ? i++ im schleifenkopf wird ja nicht ausgefürt weil es false ist und die if answeisung wird auch nicht ausgeführt weil eine der Bedingungen nicht True ist.</p>
<p>Ab welchem zeitpunkt wird dann i = 0 zu i = 1 ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000152</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:09:51 GMT]]></title><description><![CDATA[<p>kantaki schrieb:</p>
<blockquote>
<p>du meinst i++ im schleifenkopf ist false weil i = 0 ist ?</p>
</blockquote>
<p>Ja. Aber ich sehe hier nirgends eine Schleife.</p>
<p>kantaki schrieb:</p>
<blockquote>
<p>i++ im schleifenkopf wird ja nicht ausgefürt weil es false ist</p>
</blockquote>
<p>Das geht kausal nicht ganz auf. Wie soll herausgefunden werden, dass <code>i++</code> als <code>bool</code> interpretiert <code>false</code> ist, wenn der Ausdruck gar nicht erst ausgewertet wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000155</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:09:51 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:09:43 GMT]]></title><description><![CDATA[<p>das if ist true, i wird est inkrementiert und dann geschaut ob !0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000156</guid><dc:creator><![CDATA[orioon]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:11:00 GMT]]></title><description><![CDATA[<p>ah ok danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2000157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000157</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:12:30 GMT]]></title><description><![CDATA[<p>Nein es wird erst geschaut ob i!=0 ist und auf jedenfall inkrementiert!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000158</guid><dc:creator><![CDATA[ScyllaIllciz]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:12:30 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:15:23 GMT]]></title><description><![CDATA[<p>orioon schrieb:</p>
<blockquote>
<p>das if ist true, i wird est inkrementiert und dann geschaut ob !0</p>
</blockquote>
<p>Versteh ich nicht.</p>
<p>Was passier ist folgendes:<br />
Deine condition lautet (i++ &amp;&amp; j++) - welche als wahr ausgewertet wird, wenn sowohl i++ als auch j++ wahr sind. Da i und j vom Typ integer sind ist dies der Fall wenn sie ungleich 0 sind. Also wird erstmal i++ ausgewertet - es handelt sich um den postincrement-operator.<br />
Dieser inkrementiert den Wert, gibt aber den Wert vor der Inkrementation zurück.<br />
Da i vorher 0 war, wird 0 züruckgegeben - was false entspricht.<br />
Da nun die condition nicht mehr wahr werden kann, wird j++ nicht ausgewertet und auch das i++ im block-statement nicht mehr.</p>
<p>Die Variablen haben nun also die Werte i = 1 und j = 2.<br />
Du siehst - alles ist korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000159</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:15:23 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:17:59 GMT]]></title><description><![CDATA[<p>alles klar<br />
dh wenn ich aus dem i++ ein ++i machn würde , wäre das ergebnis 2 3 oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000160</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:17:59 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:19:41 GMT]]></title><description><![CDATA[<p>Genau so ist es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000162</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:19:52 GMT]]></title><description><![CDATA[<p>orioon schrieb:</p>
<blockquote>
<p>das if ist true, i wird est inkrementiert und dann geschaut ob !0</p>
</blockquote>
<p>Falsch, i++ ist Postinkrement.<br />
Das if ist <code>false</code> , das i wird ausgewertet und &quot;++ vorgemerkt&quot; makiert. i ist aber 0( <code>false</code> ), die Schleifenbedingung ist also <code>false</code> und am Ende wird i inkrementiert.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>kantaki schrieb:</p>
<blockquote>
<p>du meinst i++ im schleifenkopf ist false weil i = 0 ist ?</p>
</blockquote>
<p>Ja. Aber ich sehe hier nirgends eine Schleife.</p>
</blockquote>
<p>kennst du nicht: <a href="http://if-schleife.de/" rel="nofollow">http://if-schleife.de/</a></p>
<p>kantaki schrieb:</p>
<blockquote>
<p>alles klar<br />
dh wenn ich aus dem i++ ein ++i machn würde , wäre das ergebnis 2 3 oder ?</p>
</blockquote>
<p>Ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000163</guid><dc:creator><![CDATA[Rhombicosidodecahedron]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:19:52 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:37:04 GMT]]></title><description><![CDATA[<p>kantaki schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int i = 0, j = 2; 
if (i++ &amp;&amp; j++) { // ab dem zeitpunkt müsste doch i = 1 und j = 3 sein
    i++;          // und hier i = 2 und j = 3

}
cout &lt;&lt; i &lt;&lt; j;
</code></pre>
</blockquote>
<p>Folgender Code ist äquivalent zu Deinem:</p>
<pre><code class="language-cpp">int i = 0, j = 2;
int oldi = i;
++i;
if (oldi) {
  int oldj = j;
  ++j;
  if (oldj) {
    ++i;
  }
}
</code></pre>
<p>Warum?<br />
1. post-fix ++ erhört immer den Wert, den die Variable speichert, liefert aber den <em>alten</em> Wert zurück.<br />
2. &amp;&amp; ist ein <em>kurzschließendes</em>, logisches UND ist. Das heißt, der zweite Operand wird gar nicht erst ausgewertet, falls der erste schon false ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000164</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:37:04 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:23:43 GMT]]></title><description><![CDATA[<p>ups, selber reingefallen <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000165</guid><dc:creator><![CDATA[orioon]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:24:57 GMT]]></title><description><![CDATA[<p>danke ihr habt mir sehr geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000166</guid><dc:creator><![CDATA[kantaki]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:24:57 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:26:21 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>&amp;&amp; Operator hat vorrang und i ist zum zeitpunkt false &quot;0&quot;</p>
<p>probiere es mal mit 1 und 3 oder 4 und 6 usw</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000169</guid><dc:creator><![CDATA[foxviper]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:26:21 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:32:08 GMT]]></title><description><![CDATA[<p>foxviper schrieb:</p>
<blockquote>
<p>&amp;&amp; Operator hat vorrang und i ist zum zeitpunkt false &quot;0&quot;</p>
</blockquote>
<p><code>&amp;&amp;</code> ist im Ausdruck <code>i++ &amp;&amp; j++</code> der Operator mit der <strong>niedrigsten</strong> Priorität. Oder meinst du, er wird vor dem zweiten <code>++</code> ausgeführt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000171</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung on Wed, 29 Dec 2010 20:32:40 GMT]]></title><description><![CDATA[<p>foxviper schrieb:</p>
<blockquote>
<p>hi,</p>
<p>&amp;&amp; Operator hat vorrang und i ist zum zeitpunkt false &quot;0&quot;</p>
<p>probiere es mal mit 1 und 3 oder 4 und 6 usw</p>
<p>mfg</p>
</blockquote>
<p>&amp;&amp; (logisches UND) ist sogut wie ganz unten in der Prioritätenreihenfolge, während die postfix-operatoren ziemlich weit oben sind.</p>
<p>Siehe: <a href="http://www.cppreference.com/wiki//language/operator_precedence?redirect=1" rel="nofollow">http://www.cppreference.com/wiki//language/operator_precedence?redirect=1</a></p>
<p>P.S.: zackzefix - entweder muss ich noch schneller tippen oder keine links raussuchen <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000172</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Wed, 29 Dec 2010 20:32:40 GMT</pubDate></item></channel></rss>