<?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[Frage zu enumeration und switch case]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe meinen Code der Form:</p>
<pre><code>bool a = true;
bool b = false;
bool c = false;

infiniteLoop()
{
   if(a)
   {
      doSomething();
      a = false;
      b = true;
      return;
   }
   if(b)
   {
      doSomethingElse();
      b = false;
      c = true;
      return;
   }
   if(c)
   {
      doSomethingDifferent();
      c = false;
      a = true;
      return;
   }
}
</code></pre>
<p>.. sinnvollerweise durch ein switch-case Konstrukt ersetzt:</p>
<pre><code>enumeration Enum {A, B, C};
Enum abc = A;

infiniteLoop()
{
   switch(abc)
   {
      case A:
      {
         doSomething();
         abc = B;
         break;
      }
      case B:
      {
         doSomethingElse();
         abc = C;
         break;
      }
      case C:
      {
         doSomethingDifferent();
         abc = A;
         break;
      }
   }
}
</code></pre>
<p>Allerdings will das so nicht funktionieren. Irgendwie klappen die Zuweisungen innerhalb der cases nicht.<br />
Gibt es dafür eine sinnvolle Erklärung? Mit den if-Abfragen klappt alles und am eigentlichen Code habe ich beim switch-case sonst nichts verändert.</p>
<p>Würde mich über eine Antwort freuen, ich zerbreche mir nämlich den Kopf und komme nicht weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232548/frage-zu-enumeration-und-switch-case</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 07:23:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232548.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Jan 2009 00:17:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu enumeration und switch case on Sat, 24 Jan 2009 00:17:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe meinen Code der Form:</p>
<pre><code>bool a = true;
bool b = false;
bool c = false;

infiniteLoop()
{
   if(a)
   {
      doSomething();
      a = false;
      b = true;
      return;
   }
   if(b)
   {
      doSomethingElse();
      b = false;
      c = true;
      return;
   }
   if(c)
   {
      doSomethingDifferent();
      c = false;
      a = true;
      return;
   }
}
</code></pre>
<p>.. sinnvollerweise durch ein switch-case Konstrukt ersetzt:</p>
<pre><code>enumeration Enum {A, B, C};
Enum abc = A;

infiniteLoop()
{
   switch(abc)
   {
      case A:
      {
         doSomething();
         abc = B;
         break;
      }
      case B:
      {
         doSomethingElse();
         abc = C;
         break;
      }
      case C:
      {
         doSomethingDifferent();
         abc = A;
         break;
      }
   }
}
</code></pre>
<p>Allerdings will das so nicht funktionieren. Irgendwie klappen die Zuweisungen innerhalb der cases nicht.<br />
Gibt es dafür eine sinnvolle Erklärung? Mit den if-Abfragen klappt alles und am eigentlichen Code habe ich beim switch-case sonst nichts verändert.</p>
<p>Würde mich über eine Antwort freuen, ich zerbreche mir nämlich den Kopf und komme nicht weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651228</guid><dc:creator><![CDATA[metalhead]]></dc:creator><pubDate>Sat, 24 Jan 2009 00:17:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu enumeration und switch case on Sat, 24 Jan 2009 00:40:11 GMT]]></title><description><![CDATA[<p>Beim ersten Code werden ja eigentlich alle if-Abfragen ausgefuehrt, da du die jeweiligen bool-Variablen immer auf true setzt ...</p>
<p>Wenn du das in switch() machen willst musst du eigentlich nur die <code>break</code> Schluesselwoerter aus den cases rausnehmen...</p>
<p>Uebrigens: Die geschweiften Klammern nach <code>case</code> sind eigentlich gar nicht notwendig... (allerdings auch kein Fehler)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651232</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Sat, 24 Jan 2009 00:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu enumeration und switch case on Sat, 24 Jan 2009 00:50:55 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>durch das &quot;return;&quot; dürfte ja pro Schleifendurchlauf eigentlich immer nur ein Fall eintreten, oder habe ich was übersehen?<br />
Dass das ganze nacheinander durchlaufen würde ist sowieso nur ein unglücklicher Zufall, da ich meinen eigentlichen Code sehr stark abstrahiert habe, damit es übersichtlich bleibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651234</guid><dc:creator><![CDATA[metalhead]]></dc:creator><pubDate>Sat, 24 Jan 2009 00:50:55 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu enumeration und switch case on Sat, 24 Jan 2009 00:57:48 GMT]]></title><description><![CDATA[<p>metalhead schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>durch das &quot;return;&quot; dürfte ja pro Schleifendurchlauf eigentlich immer nur ein Fall eintreten, oder habe ich was übersehen?<br />
Dass das ganze nacheinander durchlaufen würde ist sowieso nur ein unglücklicher Zufall, da ich meinen eigentlichen Code sehr stark abstrahiert habe, damit es übersichtlich bleibt.</p>
</blockquote>
<p>Ups, das return hatte ich voellig uebersehen ... sorry</p>
<p>normalerweise muesste dein Code passen. Kann jetzt eigentlich keinen Fehler entdecken.</p>
<p>Was genau funktioniert denn nicht? Hab das gerade bei mir selbst getestet und funktioniert einwandfrei ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651238</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Sat, 24 Jan 2009 00:57:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu enumeration und switch case on Sat, 24 Jan 2009 12:46:27 GMT]]></title><description><![CDATA[<p>Ich versteh es nicht.. auf einmal klappt es! <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>
<p>Ich habe zwar nichts (zumindest bewusst ;)) am Code geändert, aber es läuft.</p>
<p>Aber danke für deine Bemühungen! <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/1651360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651360</guid><dc:creator><![CDATA[metalhead]]></dc:creator><pubDate>Sat, 24 Jan 2009 12:46:27 GMT</pubDate></item></channel></rss>