<?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[Kompletter anfänger hat eine Frage]]></title><description><![CDATA[<p>Ich lerne grad (oder versuche es) c++ mit dem buch &quot;Der c++ Programmierer&quot; und dort war ein Beispiel für die if- anweisung</p>
<pre><code>int i = 0, j = 2;
if(i++ || j++) i++;
</code></pre>
<p>Warum kommt am ende i = 2 raus ?<br />
In dem buch steht das das ein Seiteneffekt ist, aber warum passiert das?<br />
Was ich mir gedacht hab aber ich komisch finde ist:</p>
<p>1. i und j werden festgellegt<br />
2. if kann nicht erfüllt werden und nimmt das i++ und führt es aus.<br />
3. if zeile wird wiederholt und NOCHMAL i++ ausgeführt.</p>
<p>Ist das so? oder warum geschieht das?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338810/kompletter-anfänger-hat-eine-frage</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 04:37:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338810.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Jul 2016 11:42:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 11:42:05 GMT]]></title><description><![CDATA[<p>Ich lerne grad (oder versuche es) c++ mit dem buch &quot;Der c++ Programmierer&quot; und dort war ein Beispiel für die if- anweisung</p>
<pre><code>int i = 0, j = 2;
if(i++ || j++) i++;
</code></pre>
<p>Warum kommt am ende i = 2 raus ?<br />
In dem buch steht das das ein Seiteneffekt ist, aber warum passiert das?<br />
Was ich mir gedacht hab aber ich komisch finde ist:</p>
<p>1. i und j werden festgellegt<br />
2. if kann nicht erfüllt werden und nimmt das i++ und führt es aus.<br />
3. if zeile wird wiederholt und NOCHMAL i++ ausgeführt.</p>
<p>Ist das so? oder warum geschieht das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501983</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 11:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 11:54:37 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>2. if kann nicht erfüllt werden und nimmt das i++ und führt es aus.</p>
</blockquote>
<p>Wieso kann das <code>if</code> nicht erfüllt werden? Oder korrekter formuliert: warum glaubst du, dass der Ausdruck im <code>if</code> 0 ergibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501986</guid><dc:creator><![CDATA[dachschaden]]></dc:creator><pubDate>Tue, 12 Jul 2016 11:54:37 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 11:58:06 GMT]]></title><description><![CDATA[<p>Ich verstehe das so</p>
<p>&quot;wenn i++ gemacht wird oder j++ gemacht wird mache i++&quot;<br />
Aber es wurde doch nicht gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501989</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 11:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 11:59:09 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Ich verstehe das so</p>
<p>&quot;wenn i++ gemacht wird oder j++ gemacht wird &gt;&gt; mache i++&quot;<br />
Aber es wurde doch nicht gemacht?</p>
</blockquote>
<p>so ist besser</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501990</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 11:59:09 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 12:04:15 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Ich verstehe das so</p>
<p>&quot;wenn i++ gemacht wird oder j++ gemacht wird mache i++&quot;<br />
Aber es wurde doch nicht gemacht?</p>
</blockquote>
<p>Lies nochmal dein Buch oder wirf es deinem Prof an den Kopf, wenn er es dir nicht korrekt beigebracht hat.</p>
<p>Im <code>if</code> steht:<br />
1. Prüfe, ob <code>i</code> gesetzt, also ungleich 0 ist. Inkrementiere <code>i</code> in jedem Fall, nachdem du geprüft hast.<br />
2. <code>i</code> ist zu diesem Zeitpunkt nicht gesetzt, also wird <code>j</code> geprüft, und auch das inkrementiert. Aber <code>i</code> hat in jedem Fall schon mal den Wert 1.<br />
3 <code>j</code> ist jetzt gesetzt (2), und daher ist die Bedingung des <code>if</code> s erfüllt und <code>i</code> wird noch mal inkrementiert. Und dann hat <code>i</code> den Wert 2.</p>
<p>|| ist OR, nicht AND, das wäre &amp;&amp;. Nur für den Fall, dass du die Operatoren verwechselst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501992</guid><dc:creator><![CDATA[dachschaden]]></dc:creator><pubDate>Tue, 12 Jul 2016 12:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 12:23:39 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du dir das auch anders denken.</p>
<p>Nicht: &quot;Wenn XY gemacht wird&quot;<br />
Sondern: &quot;Wenn XY wahr ist&quot;.</p>
<p>Es wird also überprüft, ob i++ wahr ist. i++ erhöht i um 1 (i ist also nun von 0 auf 1 erhöht) und gibt den Wert von i VOR der Erhöhung zurück (0), also false. Demnach muss auch noch j++ überprüft werden. j++ erhöht j um 1 (also ist j nun 3) und gibt danach den vorherigen Wert von j, also 2, zurück. 2 ist im Wahrheitskontext &quot;true&quot; (alles ungleich 0 ist true) und somit wird das i++ ausgeführt.</p>
<p>Klar?</p>
<p>Dann hätte ich eine Folgefrage für dich:<br />
welchen Wert haben i und j, wenn das if stattdessen lautet:</p>
<pre><code>if (++i || ++j) ++i;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2501996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501996</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Tue, 12 Jul 2016 12:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 12:43:19 GMT]]></title><description><![CDATA[<p>Ich habe vor 2-3 im imformatikkurz gelernt das es heißt wenn &gt; dann<br />
Und ich glaube das haut mich hier ausm kontext raus</p>
<p>Hab ich das jetzt richtig verstanden das if i++ nicht wahr ist wird i++ gemacht das gleiche für j++ und dann nochmal i++ weil es am ende steht?</p>
<p>oder was ich mir grade beim nochmaligen durchlesens gedacht hab, ist es vieleicht so das er i++ ausführt wenn beides unwahr ist? dann würde beides hinkommen glaube ich oO. Sry das ist wahrscheinlich ein ganz dummes thema... aber ich blick bei diesem thema nicht durch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502003</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 12:43:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 12:54:17 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Ich habe vor 2-3 im imformatikkurz gelernt das es heißt wenn &gt; dann</p>
</blockquote>
<p>Wo bei if hört wenn auf und fängt dann an?<br />
Woraus besteht in deinem Beispiel wenn?<br />
Welchen Wert hat es?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502010</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 12 Jul 2016 12:54:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 12:55:08 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<pre><code>int i = 0, j = 2;
if(i++ || j++) i++;
</code></pre>
</blockquote>
<p>Setz mal i auf 1 statt 0 und dann achte darauf was mit j passiert. Komisch, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502011</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Tue, 12 Jul 2016 12:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 12:58:10 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Ich habe vor 2-3 im imformatikkurz gelernt das es heißt wenn &gt; dann</p>
</blockquote>
<p>if (...) heißt, &quot;wenn der ausdruck in der klammer wahr ist&quot;.</p>
<p>&quot;wahr&quot; heißt true, also ein boolscher ausdruck. ein integer kann in ein bool umgewandelt werden, folgende regel gilt: jede zahl außer 0 ist true, 0 selbst ist false.</p>
<p>der ausdruck &quot;i++&quot; liefert dir, je nachdem, welchen wert die variable vorher hatte, entweder 0 oder eine andere zahl. ++ als postinkrementoperator hat allerdings den *nebeneffekt*, nach dem liefern eines ergebnisses eines ausdrucks, in dem er verwendet wird, den wert der variablen zu erhöhen.</p>
<pre><code class="language-cpp">int i = 0;
bool j = bool{i++}; //i war 0, also liefert der ausdruck i++ 0, also ist bool j = false. i wird erst danach inkrementiert

int x = 5;
bool y = bool{x++}; //y = true
</code></pre>
<p>bei den boolschen operatoren and und or (&amp;&amp; und ||) kommt noch die regel dazu, dass der zweite operand nur dann ausgewertet wird, wenn der erste falsch (||) bzw. wahr (&amp;&amp;) ist. nur, wenn ein ausdruck ausgewertet wird, bewirkt er auch nebeneffekte.</p>
<pre><code class="language-cpp">int i = 0;
if (i++ || anderer_ausdruck) { foo(); }
</code></pre>
<p>lies: werte den ausdruck &quot;i++&quot; aus. falls er wahr ist, rufe foo aus. andernfalls werte den ausdruck &quot;anderer_ausdruck&quot; aus. falls er wahr ist, rufe rufe auf.</p>
<p>jedesmal, wenn du liest &quot;werte ... aus&quot; heißt das: &quot;werte ... aus&quot; und führe alle nebeneffekte aus. was bei einer auswertung von i++, falls i = 0, passiert, steht oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502012</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Tue, 12 Jul 2016 12:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 13:03:52 GMT]]></title><description><![CDATA[<p>In den Klammern nach dem if steht eine (logische) Bedingung die kann unwahr oder wahr sein</p>
<p>In C wird 0 als <code>UNWAHR</code> oder <code>FALSCH</code> angesehen. alles andere ist <code>WAHR</code> .</p>
<p>Du hast eine ODER-Verknüpfung ||.<br />
Die ist dann wahr, wenn einer der Operanden wahr ist. Die Auswertung erfolgt von links nach rechts.</p>
<p>i = 0; j = 2;<br />
(i++ || j++)<br />
Du hast da erstmal i++. Da i 0 ist, ist das unwahr.<br />
Jetzt wird j++ geprüft. J ist 2, damit wahr. Also ist auch die ODER-Verknüpfung wahr.<br />
Spätestens jetzt werd i und j inkrementiert (kann auch schon fürher sein)<br />
Dann ist i = 1 und j = 3.</p>
<p>Da die Bedingung vom if wahr ergeben hat, wird der if-Zweig ausgeführt. i wird inkrementiert.<br />
Damit hat i jetzt den Wert 2.</p>
<p>Das Ganze sieht aber bei (j++ || i++) anders aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502014</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Tue, 12 Jul 2016 13:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 13:11:19 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Griffn schrieb:</p>
<blockquote>
<p>Ich habe vor 2-3 im imformatikkurz gelernt das es heißt wenn &gt; dann</p>
</blockquote>
<p>Wo bei if hört wenn auf und fängt dann an?<br />
Woraus besteht in deinem Beispiel wenn?<br />
Welchen Wert hat es?</p>
</blockquote>
<p>Ich verstehe es so.<br />
1. Ab in der Klammer oder? also wenn ( das das und wahr ist )<br />
2. Wenn i++ wahr ist ODER j++ wahr ist<br />
3. i++ ist i um 1 erhöht also 1, also 1?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502023</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 13:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 13:13:55 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Ich verstehe es so.<br />
1. Ab in der Klammer oder? also wenn ( das das und wahr ist )<br />
2. Wenn i++ wahr ist ODER j++ wahr ist</p>
</blockquote>
<p>ja.<br />
i++ ist dann wahr, wenn vor dieser anweisung i != 0 ist.</p>
<blockquote>
<p>3. i++ ist i um 1 erhöht also 1, also 1?</p>
</blockquote>
<p>nein, i++ heißt: der wert ist &quot;i&quot;. ++ wird erst &quot;später&quot; (sozusagen &quot;nach der klammer&quot;) ausgeführt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502025</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Tue, 12 Jul 2016 13:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 13:14:12 GMT]]></title><description><![CDATA[<p>Zu 3.<br />
i++ ist das Postinkrement.<br />
Der Wert von i wird für die weitere Berechnung genommen, bevor i erhöht wird.<br />
Also der aktuelle Wert.</p>
<p>Das Preinkrement wäre ++i.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502026</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Tue, 12 Jul 2016 13:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 13:49:56 GMT]]></title><description><![CDATA[<pre><code>if (i++ || j++)
        i++;
</code></pre>
<p>Davon abgesehen, würde keiner sowas coden.<br />
Eher dann so:</p>
<pre><code>if (i || j)
    {
        if (!i)
            j++;
        i++;
    }
    else
        j++;
    i++;
</code></pre>
<p>Verhält sich wie (vermutlich) gewünscht. Sieht schlimmer aus, aber ist wenigstens deterministisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502037</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Tue, 12 Jul 2016 13:49:56 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 13:57:24 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p>Zu 3.<br />
i++ ist das Postinkrement.<br />
Der Wert von i wird für die weitere Berechnung genommen, bevor i erhöht wird.<br />
Also der aktuelle Wert.</p>
<p>Das Preinkrement wäre ++i.</p>
</blockquote>
<p>Gut, das wusste ich nicht, aber ich verstehe immernoch nicht warum das ergebnis rauskommt</p>
<p>also if ( i++ || j++ ) i++;<br />
heißt also wenn ich alles was ich jetzt weiß einbeziehe<br />
Von links nach rechts</p>
<p>i++ ist unwahr also nix || j++ ist doch auch unwahr ?!?<br />
vieleicht blockt mir da was anderes vor undzwar</p>
<p>1. i++ = postinkrement heißt also wird nach der aufgabe berechnet, aber wie wird das gehandhabt? Schließlich verstehe ich nicht wie das programm nachprüfen soll ob es schonmal erhört worden ist.<br />
2. Hier im buch ist die abbildung für if so :<br />
if -&gt; ( BEDINGUNG ) &gt; Anweisung oder Block -&gt;<br />
Natürlich noch mit else aber das wird hier aber nicht gebraucht schätze ich.<br />
Nach der abbildung heißt es für mich das keine bedingung in der klammer erfühlt wurde also theroetisch nix mit den zahlen passieren sollte oder?</p>
<p>Ist vieleicht viel verlangt aber kann mir das einer &quot;wördlich&quot; erklären nach dem motto schrittweise wie eine anweisung (1. er prüfft das 2. dann das 3. dann macht er das...)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502039</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 13:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 14:16:01 GMT]]></title><description><![CDATA[<p>Griffn  schrieb:</p>
<blockquote>
<p>i++ ist unwahr also nix || j++ ist doch auch unwahr ?!?</p>
</blockquote>
<p>Was ist denn für dich nix?<br />
Wie ist die Wahrheitstabelle für ODER?<br />
Welchen Wert hat j?</p>
<p>Griffn  schrieb:</p>
<blockquote>
<p>Ist vieleicht viel verlangt aber kann mir das einer &quot;wördlich&quot; erklären nach dem motto schrittweise wie eine anweisung (1. er prüfft das 2. dann das 3. dann macht er das...)?</p>
</blockquote>
<p>Habe ich doch schon gemacht (oke ohne 1. 2. 3., aber das kannst du dir vor jeder ZEile denken):</p>
<p>DirkB schrieb:</p>
<blockquote>
<p>Du hast eine ODER-Verknüpfung ||.<br />
Die ist dann wahr, wenn einer der Operanden wahr ist. Die Auswertung erfolgt von links nach rechts.</p>
<p>i = 0; j = 2;<br />
(i++ || j++)<br />
Du hast da erstmal i++. Da i 0 ist, ist das unwahr.<br />
Jetzt wird j++ geprüft. j ist 2, damit wahr. Also ist auch die ODER-Verknüpfung wahr.<br />
Spätestens jetzt werden i und j inkrementiert (kann auch schon früher sein)<br />
Dann ist i = 1 und j = 3.</p>
<p>Da die Bedingung vom if wahr ergeben hat, wird der if-Zweig ausgeführt. i wird inkrementiert.<br />
Damit hat i jetzt den Wert 2.</p>
<p>Das Ganze sieht aber bei (j++ || i++) anders aus.</p>
</blockquote>
<p>Griffn  schrieb:</p>
<blockquote>
<p>Schließlich verstehe ich nicht wie das programm nachprüfen soll ob es schonmal erhört worden ist.</p>
</blockquote>
<p>Das braucht es nicht prüfen,das wird gemacht. Es gibt Prozessoren, die machen das in einem Befehl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502042</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Tue, 12 Jul 2016 14:16:01 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 14:38:18 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p>Griffn  schrieb:</p>
<blockquote>
<p>i++ ist unwahr also nix || j++ ist doch auch unwahr ?!?</p>
</blockquote>
<p>Was ist denn für dich nix?<br />
Wie ist die Wahrheitstabelle für ODER?<br />
Welchen Wert hat j?</p>
<p>Griffn  schrieb:</p>
<blockquote>
<p>Ist vieleicht viel verlangt aber kann mir das einer &quot;wördlich&quot; erklären nach dem motto schrittweise wie eine anweisung (1. er prüfft das 2. dann das 3. dann macht er das...)?</p>
</blockquote>
<p>Habe ich doch schon gemacht (oke ohne 1. 2. 3., aber das kannst du dir vor jeder ZEile denken):</p>
<p>DirkB schrieb:</p>
<blockquote>
<p>Du hast eine ODER-Verknüpfung ||.<br />
Die ist dann wahr, wenn einer der Operanden wahr ist. Die Auswertung erfolgt von links nach rechts.</p>
<p>i = 0; j = 2;<br />
(i++ || j++)<br />
Du hast da erstmal i++. Da i 0 ist, ist das unwahr.<br />
Jetzt wird j++ geprüft. j ist 2, damit wahr. Also ist auch die ODER-Verknüpfung wahr.<br />
Spätestens jetzt werden i und j inkrementiert (kann auch schon früher sein)<br />
Dann ist i = 1 und j = 3.</p>
<p>Da die Bedingung vom if wahr ergeben hat, wird der if-Zweig ausgeführt. i wird inkrementiert.<br />
Damit hat i jetzt den Wert 2.</p>
<p>Das Ganze sieht aber bei (j++ || i++) anders aus.</p>
</blockquote>
<p>Griffn  schrieb:</p>
<blockquote>
<p>Schließlich verstehe ich nicht wie das programm nachprüfen soll ob es schonmal erhört worden ist.</p>
</blockquote>
<p>Das braucht es nicht prüfen,das wird gemacht. Es gibt Prozessoren, die machen das in einem Befehl.</p>
</blockquote>
<p>Nix = Unwahr<br />
Wenn a oder b wahr ist wird ausgeführt<br />
j hat den wert 2</p>
<p>Warum ist j denn Wahr? es wurde doch nicht erhöht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502045</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 14:38:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 14:42:59 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Warum ist j denn Wahr? es wurde doch nicht erhöht?</p>
</blockquote>
<p>Wenn j einen Wert !=0 hat, ist j &quot;wahr&quot;. Das ist halt in C so festgelegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502046</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Tue, 12 Jul 2016 14:42:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 15:37:30 GMT]]></title><description><![CDATA[<p>Also praktisch wird überhaubt nicht gefragt ob i oder j erhöht wurden sondern ob sie 0 &lt; also wahr sind? das würde es erklähren. Jetzt bleibt für mich nurnoch offen warum i 2 mal erhöht wurde, kann es sein das die bedingung 2 mal gecheckt wird falls etwas geregelt wurde?</p>
<p>also?:</p>
<p>1<br />
if ( i++ || j++ ) i++;<br />
false true<br />
i++ wird ausgeführt<br />
2. if ( i++ || j++ ) i++;<br />
true<br />
da i ja erhöht wurde und somit true ist<br />
i++ wird ausgeführt</p>
<p>stimmt das so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502054</guid><dc:creator><![CDATA[Griffn]]></dc:creator><pubDate>Tue, 12 Jul 2016 15:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 15:49:11 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Also praktisch wird überhaubt nicht gefragt ob i oder j erhöht wurden sondern ob sie 0 &lt; also wahr sind? das würde es erklähren.</p>
</blockquote>
<p>Richtig, das if interessiert sich nicht für die Nebeneffekte, sondern nur für das Ergebnis der Bedingung.</p>
<blockquote>
<p>Jetzt bleibt für mich nurnoch offen warum i 2 mal erhöht wurde, kann es sein das die bedingung 2 mal gecheckt wird falls etwas geregelt wurde?</p>
</blockquote>
<p>Nein! Die Bedingung wird genau 1x geprüft.</p>
<p>Lies dir doch bitte die gefühlten 100 Erklärungen nochmals durch!</p>
<blockquote>
<p>1<br />
if ( i++ || j++ ) i++;<br />
false true<br />
i++ wird ausgeführt</p>
</blockquote>
<p>Genau, das sind doch schon 2 i++.</p>
<p>false || true ergibt true. Die Bedingung ist doch wahr!</p>
<blockquote>
<p>2. if ( i++ || j++ ) i++;<br />
true<br />
da i ja erhöht wurde und somit true ist<br />
i++ wird ausgeführt</p>
</blockquote>
<p>Nein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502056</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Tue, 12 Jul 2016 15:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Kompletter anfänger hat eine Frage on Tue, 12 Jul 2016 19:08:26 GMT]]></title><description><![CDATA[<p>Griffn schrieb:</p>
<blockquote>
<p>Jetzt bleibt für mich nurnoch offen warum i 2 mal erhöht wurde, k</p>
</blockquote>
<p>Wenn die Bedingung beim if wahr ist, wird der if-Zweig ausgeführt. Und da steht noch ein i++</p>
<pre><code>if ( i++ || j++ ) 
  { 
    i++;
  }
</code></pre>
<p>so besser? Ist kein Unterschied zu dem Einzeiler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502058</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Tue, 12 Jul 2016 19:08:26 GMT</pubDate></item></channel></rss>