<?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[Unverständnis über Verhalten bei do while Austrittsbedingung]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin C++ (und Programmiersprachen überhaupt) Anfänger. Nun hab ich hier eine do-while-Schleife und versteh nicht so ganz deren Verhalten bei diesem Stück Code:</p>
<pre><code>int main(){

  do{
        zeichen = getch();
        zeichenkette = zeichenkette + zeichen;
        cout &lt;&lt; zeichen;
  }while(zeichen != char(13) || zeichen != char(99));

  cout &lt;&lt; endl &lt;&lt; zeichenkette.toStdString();
}
</code></pre>
<p>Die Schleife soll also solange Zeichen von der Tastatur lesen und das gelesene in die Variable zeichenkette anhängen und ausgeben solange ich keine Enter oder c Taste betätige, dann soll alles ausgegeben werden. char(99) (was ja c sein soll) hab ich nur als Test da angefügt. Ohne das c macht das Programm was ich von ihm erwarte, nämlich sobald Enter gedrückt wird, hört er mit dem einlesen auf und gibt alles eingegebene aus. Aber so wie es oben steht (mit dem c) hört er weder nach Enter noch nach c auf einzulesen. Nach Enter fängt er lediglich vom Anfang der Zeile wieder an einzulesen, was ich auch nicht verstehe.</p>
<p>Könnt ihr mir erklären was da vor sich geht?</p>
<p>Danke und Gruß<br />
hexadezimal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313921/unverständnis-über-verhalten-bei-do-while-austrittsbedingung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 17:45:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313921.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Feb 2013 09:54:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 09:54:57 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin C++ (und Programmiersprachen überhaupt) Anfänger. Nun hab ich hier eine do-while-Schleife und versteh nicht so ganz deren Verhalten bei diesem Stück Code:</p>
<pre><code>int main(){

  do{
        zeichen = getch();
        zeichenkette = zeichenkette + zeichen;
        cout &lt;&lt; zeichen;
  }while(zeichen != char(13) || zeichen != char(99));

  cout &lt;&lt; endl &lt;&lt; zeichenkette.toStdString();
}
</code></pre>
<p>Die Schleife soll also solange Zeichen von der Tastatur lesen und das gelesene in die Variable zeichenkette anhängen und ausgeben solange ich keine Enter oder c Taste betätige, dann soll alles ausgegeben werden. char(99) (was ja c sein soll) hab ich nur als Test da angefügt. Ohne das c macht das Programm was ich von ihm erwarte, nämlich sobald Enter gedrückt wird, hört er mit dem einlesen auf und gibt alles eingegebene aus. Aber so wie es oben steht (mit dem c) hört er weder nach Enter noch nach c auf einzulesen. Nach Enter fängt er lediglich vom Anfang der Zeile wieder an einzulesen, was ich auch nicht verstehe.</p>
<p>Könnt ihr mir erklären was da vor sich geht?</p>
<p>Danke und Gruß<br />
hexadezimal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298800</guid><dc:creator><![CDATA[hexadezimal]]></dc:creator><pubDate>Thu, 14 Feb 2013 09:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 10:05:05 GMT]]></title><description><![CDATA[<p>Deine while Bedingung ist falsch. Überleg dir mal genau was passiert wenn char(13) oder char(99) daherkommt.<br />
Tip: Deine Bedingung ist immer true egal welches Zeichen kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298805</guid><dc:creator><![CDATA[Tanren]]></dc:creator><pubDate>Thu, 14 Feb 2013 10:05:05 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 12 Jun 2014 10:53:23 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298809</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 10:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 10:24:18 GMT]]></title><description><![CDATA[<p>Tanren schrieb:</p>
<blockquote>
<p>Deine while Bedingung ist falsch. Überleg dir mal genau was passiert wenn char(13) oder char(99) daherkommt.<br />
Tip: Deine Bedingung ist immer true egal welches Zeichen kommt.</p>
</blockquote>
<p>Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.</p>
<p>Swordfish schrieb:</p>
<blockquote>
<p>hexadezimal schrieb:</p>
<blockquote>
<p>[...] solange ich keine Enter oder c Taste betätige, [...]</p>
</blockquote>
<p>... und warum stehen in deinem Code so komische Zahlen?</p>
</blockquote>
<p>die hab ich aus der ASCII-Tabelle. Was hab ich falsch gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298812</guid><dc:creator><![CDATA[hexadezimal]]></dc:creator><pubDate>Thu, 14 Feb 2013 10:24:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 10:37:50 GMT]]></title><description><![CDATA[<p>hexadezimal schrieb:</p>
<blockquote>
<p>Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.</p>
</blockquote>
<p>Du musst das schon etwas genauer anschauen so wird das sonst nichts mit dem programmieren.<br />
Was mach denn das || ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298817</guid><dc:creator><![CDATA[Tanren]]></dc:creator><pubDate>Thu, 14 Feb 2013 10:37:50 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 10:37:59 GMT]]></title><description><![CDATA[<p>hexadezimal schrieb:</p>
<blockquote>
<p>Tanren schrieb:</p>
<blockquote>
<p>Deine while Bedingung ist falsch. Überleg dir mal genau was passiert wenn char(13) oder char(99) daherkommt.<br />
Tip: Deine Bedingung ist immer true egal welches Zeichen kommt.</p>
</blockquote>
<p>Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.</p>
</blockquote>
<p>Nein, du sollst nicht sagen, was du denkst, was es tut, sondern du sollst überlegen, was es tut!<br />
Lassen wir mal die blödsinnigen Typumwandlungen weg, die machen sowieso nichts. Dann wird es etwas übersichtlicher:</p>
<pre><code>if (zeichen != 13 || zeichen != 99)
</code></pre>
<p>In Worten: &quot;Wenn Zeichen ungleich 13 oder wenn Zeichen ungleich 99</p>
<p>Nun überleg mal, in welchen der folgenden Fällen die Bedingung wahr oder falsch ist (und warum!):<br />
1. Wenn Zeichen gleich 13 ist<br />
2. Wenn Zeichen gleich 99 ist<br />
3. Wenn Zeichen gleich 73 ist<br />
4. Wenn Zeichen einen beliebigen Wert hat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298818</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 14 Feb 2013 10:37:59 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 10:52:31 GMT]]></title><description><![CDATA[<p>Tanren schrieb:</p>
<blockquote>
<p>hexadezimal schrieb:</p>
<blockquote>
<p>Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.</p>
</blockquote>
<p>Du musst das schon etwas genauer anschauen so wird das sonst nichts mit dem programmieren.<br />
Was mach denn das || ?</p>
</blockquote>
<p>Ok. Ich denke ich hab einen meiner Fehler entdeckt. Die || überprüfen ob nur eins von dem Zutrifft. Wenn ich jetzt zwar kein Enter gedrückt habe, aber dafür c macht er dennoch weiter mit dem Einlesen, da ja in dem Fall bei Enter true rauskommt, wenn ich kein Enter betätige. Also ist die Abfrage totaler Quatsch, weil es nie der Fall sein kann.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>hexadezimal schrieb:</p>
<blockquote>
<p>Tanren schrieb:</p>
<blockquote>
<p>Deine while Bedingung ist falsch. Überleg dir mal genau was passiert wenn char(13) oder char(99) daherkommt.<br />
Tip: Deine Bedingung ist immer true egal welches Zeichen kommt.</p>
</blockquote>
<p>Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.</p>
</blockquote>
<p>Nein, du sollst nicht sagen, was du denkst, was es tut, sondern du sollst überlegen, was es tut!<br />
Lassen wir mal die blödsinnigen Typumwandlungen weg, die machen sowieso nichts. Dann wird es etwas übersichtlicher:</p>
<pre><code>if (zeichen != 13 || zeichen != 99)
</code></pre>
<p>In Worten: &quot;Wenn Zeichen ungleich 13 oder wenn Zeichen ungleich 99</p>
<p>Nun überleg mal, in welchen der folgenden Fällen die Bedingung wahr oder falsch ist (und warum!):<br />
1. Wenn Zeichen gleich 13 ist<br />
2. Wenn Zeichen gleich 99 ist<br />
3. Wenn Zeichen gleich 73 ist<br />
4. Wenn Zeichen einen beliebigen Wert hat</p>
</blockquote>
<p>In allen Fällen ist sie wahr, da, wenn zwar der erste Teil der Bedingung falsch ist durch den zweiten Teil der Bedingung der Gesamtausdruck aber wieder wahr wird, und andersrum. Stimmt diese Überlegung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298823</guid><dc:creator><![CDATA[hexadezimal]]></dc:creator><pubDate>Thu, 14 Feb 2013 10:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 12 Jun 2014 10:53:26 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298825</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 10:53:26 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 11:04:37 GMT]]></title><description><![CDATA[<p>Gracias <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>Klasse Forum <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="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298829</guid><dc:creator><![CDATA[hexadezimal]]></dc:creator><pubDate>Thu, 14 Feb 2013 11:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 12 Jun 2014 10:53:30 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298831</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 10:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 11:25:33 GMT]]></title><description><![CDATA[<p>Also könnte die Bedingung so aussehn:</p>
<pre><code>do{
...
}while(zeichen != '\r');
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298834</guid><dc:creator><![CDATA[hexadezimal]]></dc:creator><pubDate>Thu, 14 Feb 2013 11:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to Unverständnis über Verhalten bei do while Austrittsbedingung on Thu, 14 Feb 2013 11:46:57 GMT]]></title><description><![CDATA[<p>while(zeichen != '\r' <strong>&amp;&amp;</strong> zeichen != 'c');</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298835</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 14 Feb 2013 11:46:57 GMT</pubDate></item></channel></rss>