<?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[Einsteiger-Verständnisfrage: Völlig kryptischer Code]]></title><description><![CDATA[<p>Hallo C(++)-Freunde!</p>
<p>Zur Zeit beschäftige ich mich erstmals in meinem Leben intensiver mit C++ und komme damit so schlecht und recht voran.</p>
<p>Doch an einer Zeile eines größeren Quelltextes scheitere ich völlig:</p>
<pre><code>while (++k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
<p>Es gibt kein vorgelagertes oder nachgelagertes „do“, sodaß ich keinerlei Schleifenstruktur erkenne bzw. erkennen kann, womit mir dieses „while“ völlig nebulös bleibt. Das bestätigt sich auch darin, daß ich diese Zeile auskommentieren bzw. entfernen kann und der Quelltext dennoch compiliert wird (mit dem Borland-C++-Builder). Auch Versuche, diesen Code optisch etwas anschaulicher zu gestalten, um dahinterzusteigen, was eigentlich passiert, wie z.B.</p>
<pre><code>while (k&lt;len &amp;&amp; a[k]==nil) k++;
</code></pre>
<p>führen zwar dazu, daß der Quelltext immer noch compiliert wird und das Programm abläuft, jedoch mit falschem Ergebnis.</p>
<p>Hingegen wird</p>
<pre><code>do k++ while (k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
<p>gar nicht erst compiliert.</p>
<p>Was also macht die oben eingangs geanannte Codezeile?</p>
<p>Besten Dank für die Aufmerksamkeit und für die Mühe der Antwort(en?)!</p>
<p>Freundlicher Gruß</p>
<p>C-Laie</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284730/einsteiger-verständnisfrage-völlig-kryptischer-code</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 20:12:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284730.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Apr 2011 19:40:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 19:56:45 GMT]]></title><description><![CDATA[<p>Hallo C(++)-Freunde!</p>
<p>Zur Zeit beschäftige ich mich erstmals in meinem Leben intensiver mit C++ und komme damit so schlecht und recht voran.</p>
<p>Doch an einer Zeile eines größeren Quelltextes scheitere ich völlig:</p>
<pre><code>while (++k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
<p>Es gibt kein vorgelagertes oder nachgelagertes „do“, sodaß ich keinerlei Schleifenstruktur erkenne bzw. erkennen kann, womit mir dieses „while“ völlig nebulös bleibt. Das bestätigt sich auch darin, daß ich diese Zeile auskommentieren bzw. entfernen kann und der Quelltext dennoch compiliert wird (mit dem Borland-C++-Builder). Auch Versuche, diesen Code optisch etwas anschaulicher zu gestalten, um dahinterzusteigen, was eigentlich passiert, wie z.B.</p>
<pre><code>while (k&lt;len &amp;&amp; a[k]==nil) k++;
</code></pre>
<p>führen zwar dazu, daß der Quelltext immer noch compiliert wird und das Programm abläuft, jedoch mit falschem Ergebnis.</p>
<p>Hingegen wird</p>
<pre><code>do k++ while (k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
<p>gar nicht erst compiliert.</p>
<p>Was also macht die oben eingangs geanannte Codezeile?</p>
<p>Besten Dank für die Aufmerksamkeit und für die Mühe der Antwort(en?)!</p>
<p>Freundlicher Gruß</p>
<p>C-Laie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045679</guid><dc:creator><![CDATA[C-Laie 0]]></dc:creator><pubDate>Wed, 06 Apr 2011 19:56:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 19:47:25 GMT]]></title><description><![CDATA[<p>Die Schleife zählt k solange hoch bis entweder das Ende des rrays erreicht ist, oder a[k] != nil ist.</p>
<p>++k ist ein Preinkrement und k++ ein Postinkrement, diese unterscheiden sich in der Funktionsweise. Dies ist auch der Grund warum dein Versuch das in eine normale Schleifen-Form zu bringen gescheitert ist.</p>
<p>While Do (nur do while gibt es) gibt es nicht darum geht es auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045682</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 06 Apr 2011 19:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 19:58:35 GMT]]></title><description><![CDATA[<p>C-Laie schrieb:</p>
<blockquote>
<p>Es gibt kein vorgelagertes oder nachgelagertes „do“, sodaß ich keinerlei Schleifenstruktur erkenne bzw. erkennen kann, womit mir dieses „while“ völlig nebulös bleibt.</p>
</blockquote>
<p>Ja, hier sind zwei unverständliche Sachen kombiniert:</p>
<pre><code>do while Bedingung
   tuwas
loop
</code></pre>
<p>ist in C und C++</p>
<pre><code class="language-cpp">while(bedingung)
   tuwas;
</code></pre>
<p>und</p>
<pre><code>do
   tuwas
loop while Bedingung
</code></pre>
<p>ist in C und C++</p>
<pre><code class="language-cpp">do
   tuwas;
while(bedingung);
</code></pre>
<p>Also die Kopfgesteuerste Schleife kommt ohne do aus.</p>
<p>Der zweite Trick ist, daß das Semikolon alleine bereits eine erlaubte Anweisung ist (und die tut nichts).</p>
<pre><code class="language-cpp">while(bedingung)
   tunix;
</code></pre>
<p>ist</p>
<pre><code class="language-cpp">while(bedingung)
{
}
</code></pre>
<p>aber auch in der lustigen Schreibweise</p>
<pre><code class="language-cpp">while(bedingung)
    ;
</code></pre>
<p>und wenn man komisch einrückt, sogar</p>
<pre><code class="language-cpp">while(bedingung);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045687</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 06 Apr 2011 19:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:00:13 GMT]]></title><description><![CDATA[<p>Ja, danke! While-do löschte ich soeben, das stammt ja aus C#.</p>
<p>Ich werde jetzt mit Deinen Hinweisen versuchen, den Code noch etwas weiter zu „zerpflücken“, bis er in eine für Maschine und Mensch (mich) verständliche Form annimmt.</p>
<p>Edit: Schon die zweite Antwort, danke also an Euch beide!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045689</guid><dc:creator><![CDATA[C-Laie 0]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:00:13 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:05:45 GMT]]></title><description><![CDATA[<p>C-Laie schrieb:</p>
<blockquote>
<p>Ja, danke! While-do löschte ich soeben, das stammt ja aus C#.</p>
</blockquote>
<p>Wie bitte? Das gibts auch in C# nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045697</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:05:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:13:07 GMT]]></title><description><![CDATA[<p>Es ist wie verhext: Kaum fragte ich, funktioniert es. Also</p>
<pre><code>while (k&lt;len &amp;&amp; a[k]==nil) ++k;
</code></pre>
<p>funktioniert nunmehr ebenso wie</p>
<pre><code>while (k&lt;len &amp;&amp; a[k]==nil) k++;
</code></pre>
<p>Da saß mir immer noch C# im Nacken.</p>
<p>Unklar ist mir aber immer noch, warum</p>
<pre><code>do k++ while(k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
<p>vom Compiler abgelehnt wird. Das ist jetzt mehr rhetorisch gefragt, weil ich die Antwort darauf nicht benötige, aber vielleicht ist das ja auch noch ganz einfach - mit wenigen Wörtern - klärbar.</p>
<p>Nochmals danke!</p>
<p>C-Laie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045705</guid><dc:creator><![CDATA[C-Laie 0]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:16:19 GMT]]></title><description><![CDATA[<p>HighLigerBiMBam schrieb:</p>
<blockquote>
<p>C-Laie schrieb:</p>
<blockquote>
<p>Ja, danke! While-do löschte ich soeben, das stammt ja aus C#.</p>
</blockquote>
<p>Wie bitte? Das gibts auch in C# nicht.</p>
</blockquote>
<p>Dann bitte ich um Nachsicht: Dann war mir das noch von Pascal in Erinnerung.</p>
<p>Es ist eben keinesfalls von Vorteil, sich mit mehreren Programmiersprachen zu beschäftigen, weil man immer mehr durcheinanderbringt. Ist zumindest bei mir so - ein Beobachtung, die ich im übrigen auch bei natürlichen Sprachen machte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045709</guid><dc:creator><![CDATA[C-Laie 0]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:18:12 GMT]]></title><description><![CDATA[<p>Weil bei k++ das Semikolon fehlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045712</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:18:50 GMT]]></title><description><![CDATA[<p>C-Laie schrieb:</p>
<blockquote>
<pre><code>do k++ while(k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
</blockquote>
<pre><code>do 
  k++; 
while(k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
<pre><code>do k++; while(k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045714</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:18:50 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:25:08 GMT]]></title><description><![CDATA[<p>Ja, der Apostroph fehlte, nunmehr ist es mir klar, danke!</p>
<p>Wie gesagt, je mehr Programmiersprachen, desto schlimmer wird es. Leider war bei der Compilermeldung „Statement missing ;“ das Apostroph nur allzuleicht zu übersehen.</p>
<p>Danke, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045721</guid><dc:creator><![CDATA[C-Laie 0]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:25:08 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:29:52 GMT]]></title><description><![CDATA[<p>Das Semikolon wird aber traurig, wenn Du es Apostroph nennst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045726</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:29:52 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:37:16 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Das Semikolon wird aber traurig, wenn Du es Apostroph nennst.</p>
</blockquote>
<p><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/2045729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045729</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:37:16 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Wed, 06 Apr 2011 20:39:37 GMT]]></title><description><![CDATA[<p>Strich Punkt!? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045732</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 06 Apr 2011 20:39:37 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Thu, 07 Apr 2011 10:36:41 GMT]]></title><description><![CDATA[<p>Ihr werdet es vielleicht nicht glauben, aber das fiel mir heute nacht (!) von allein ein, daß ich das arme Semikolon evtl. auch noch falsch titulierte. Gestern war aber auch wirklich sehr wenig mit mir los - Asche auf mein Haupt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045917</guid><dc:creator><![CDATA[C-Laie 0]]></dc:creator><pubDate>Thu, 07 Apr 2011 10:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Thu, 07 Apr 2011 11:52:32 GMT]]></title><description><![CDATA[<p>Wenn das Apostroph runterfällt und deswegen ein Suchflieger startet, um es zu suchen, könnte sich kurzzeitig die Konstellation ergeben, dass es wie ein Semikolon aussieht:</p>
<pre><code>t0: ´
t1: ·
t2: ,
t3: ,     ·    
t4: ,    ·
t5: ,   ·
t6: ,  ·
t7: , ·
t8: ,·
t9: ;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045958</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Einsteiger-Verständnisfrage: Völlig kryptischer Code on Thu, 07 Apr 2011 11:59:47 GMT]]></title><description><![CDATA[<p>C-Laie schrieb:</p>
<blockquote>
<p>Es ist wie verhext: Kaum fragte ich, funktioniert es. Also</p>
<pre><code>while (k&lt;len &amp;&amp; a[k]==nil) ++k;
</code></pre>
<p>funktioniert nunmehr</p>
</blockquote>
<p>Der Code ist aber nicht äquivalent. Beim Original, hier nochmal zur Erinnerung</p>
<pre><code class="language-cpp">while (++k&lt;len &amp;&amp; a[k]==nil);
</code></pre>
<p>wird k bereits vor dem ersten Schleifendurchlauf einmal inkrementiert. Du machst also jetzt einen Durchlauf mehr. Und wenn das erste k (k=0 nehme ich an, aber das hast du nicht mitgeteilt) die Bedingung bereits wahr werden lässt, dann ist das auch das Ergebnis, was im Original nicht der Fall wäre. Äquivalent wäre</p>
<pre><code class="language-cpp">k++;
while (k&lt;len &amp;&amp; a[k]==nil) k++;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045963</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:59:47 GMT</pubDate></item></channel></rss>