<?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[Auswertung von Operatoren, Precedence]]></title><description><![CDATA[<p>Guten Tag ich würde gerne wissen was in diesem Ausdruck passiert:</p>
<pre><code class="language-cpp">a = b = c = 0; erg = a &amp;&amp; b || c;
</code></pre>
<p>Also wie er gelesen und wie er ausgewertet wird.<br />
= hat ja die niedrigste precedence also wird zuerst berücksichtigt und zuletzt &quot;beendet&quot;, ich dachte immer der operator mit dem höchsten vorrang wird zuerst gelesen, aber das ist wohl nicht so... wenn ich es von links nach rechts lesen würde: a ist true weil nicht 0 ( false ) ( direkt inkrementiert ) und b genauso, daswegen gibt &amp;&amp; true an erg zurück, also wird erg = true, aber wie ist es denn richtig schritt für schritt wäre gut <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>
<p>danke im vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306051/auswertung-von-operatoren-precedence</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 12:07:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306051.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Jul 2012 15:08:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auswertung von Operatoren, Precedence on Mon, 16 Jul 2012 15:08:16 GMT]]></title><description><![CDATA[<p>Guten Tag ich würde gerne wissen was in diesem Ausdruck passiert:</p>
<pre><code class="language-cpp">a = b = c = 0; erg = a &amp;&amp; b || c;
</code></pre>
<p>Also wie er gelesen und wie er ausgewertet wird.<br />
= hat ja die niedrigste precedence also wird zuerst berücksichtigt und zuletzt &quot;beendet&quot;, ich dachte immer der operator mit dem höchsten vorrang wird zuerst gelesen, aber das ist wohl nicht so... wenn ich es von links nach rechts lesen würde: a ist true weil nicht 0 ( false ) ( direkt inkrementiert ) und b genauso, daswegen gibt &amp;&amp; true an erg zurück, also wird erg = true, aber wie ist es denn richtig schritt für schritt wäre gut <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>
<p>danke im vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233228</guid><dc:creator><![CDATA[Fragezeichen!]]></dc:creator><pubDate>Mon, 16 Jul 2012 15:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertung von Operatoren, Precedence on Mon, 16 Jul 2012 15:16:09 GMT]]></title><description><![CDATA[<p>Das sind zwei Ausdrücke. Und wo wird da was inkrementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233232</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 16 Jul 2012 15:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertung von Operatoren, Precedence on Mon, 16 Jul 2012 15:21:52 GMT]]></title><description><![CDATA[<p>Erster Ausdruck:</p>
<pre><code class="language-cpp">a = b = c = 0;
</code></pre>
<p>a wird gleich dem gesetzt, was rechts steht. Rechts steht <code>b = c = 0</code> . Das heißt, b wird das, was rechts steht. Rechts steht <code>c = 0</code> . Das heißt, c wird das, was rechts steht. Rechts steht 0. Somit wird c auf 0 gesetzt, somit auch b, somit auch a.</p>
<p>Zweiter Ausdruck:</p>
<pre><code class="language-cpp">erg = a &amp;&amp; b || c;
</code></pre>
<p>erg wird das, was rechts steht. Rechts steht <code>a &amp;&amp; b || c</code> . Mit expliziten Klammen nach der Operatorpriorität ist dies das gleiche wie <code>(a &amp;&amp; b) || c</code> , da &amp;&amp; die höhere Priorität hat. Somit wird zunächst <code>(a &amp;&amp; b)</code> ausgewertet. Da a schon 0 ist, wird b gar nicht mehr angeguckt (Stichwort: short-circuit-evaluation) und der Ausdruck ist sofort false. Somit steht noch <code>false || c</code> . Da false nicht true ist, muss die rechte Seite betrachtet werden. c ist aber auch 0, daher ist der ganze Ausdruck auf der rechten Seite false und dies wird erg zugewiesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233238</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 16 Jul 2012 15:21:52 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertung von Operatoren, Precedence on Mon, 16 Jul 2012 15:25:08 GMT]]></title><description><![CDATA[<p>so ein mist, das forum hat die ++ gelöscht o.o der richtige code:</p>
<pre><code class="language-cpp">a = b = c = 0;
erg = ++a &amp;&amp; ++b || ++c;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2233239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233239</guid><dc:creator><![CDATA[Fragözeichen]]></dc:creator><pubDate>Mon, 16 Jul 2012 15:25:08 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertung von Operatoren, Precedence on Mon, 16 Jul 2012 15:28:27 GMT]]></title><description><![CDATA[<p>so wie ich das verstehe:<br />
c, b, a = 0<br />
++a true, ++b true, &amp;&amp; ist true, also wäre es true || ++c; da aber || nur ein true benötigt, || = true und erg = true ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2233241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2233241</guid><dc:creator><![CDATA[Fragözeichen]]></dc:creator><pubDate>Mon, 16 Jul 2012 15:28:27 GMT</pubDate></item></channel></rss>