<?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[switch-anweisung]]></title><description><![CDATA[<p>Mal ne Anfängerfrage:</p>
<p>Ich beschäftige mich gerade mit den Kontrollstrukturen und bin gerade bei der switch-Anweisung angelangt.<br />
Da steht dass die switch anweisung immer so geschrieben wird:</p>
<p>switch (Bedingung) {</p>
<p>case 1:<br />
//Anweisungen<br />
break;<br />
case 2:<br />
//Anweisungen<br />
break;<br />
...<br />
...<br />
default:<br />
//Anweisungen<br />
}</p>
<p>Meine Frage wäre da, ob man statt z.B.<br />
&quot;case 1:&quot; zu schreiben auch z.B. &quot;case a=2&quot; oder &quot;case a=b&quot; schreiben kann.<br />
Oder ist es explizit notwendig dass case immer der Reihe nach durchnummeriert ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/262061/switch-anweisung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 21:48:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/262061.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Feb 2010 14:46:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 14:46:50 GMT]]></title><description><![CDATA[<p>Mal ne Anfängerfrage:</p>
<p>Ich beschäftige mich gerade mit den Kontrollstrukturen und bin gerade bei der switch-Anweisung angelangt.<br />
Da steht dass die switch anweisung immer so geschrieben wird:</p>
<p>switch (Bedingung) {</p>
<p>case 1:<br />
//Anweisungen<br />
break;<br />
case 2:<br />
//Anweisungen<br />
break;<br />
...<br />
...<br />
default:<br />
//Anweisungen<br />
}</p>
<p>Meine Frage wäre da, ob man statt z.B.<br />
&quot;case 1:&quot; zu schreiben auch z.B. &quot;case a=2&quot; oder &quot;case a=b&quot; schreiben kann.<br />
Oder ist es explizit notwendig dass case immer der Reihe nach durchnummeriert ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862341</guid><dc:creator><![CDATA[Honky]]></dc:creator><pubDate>Sun, 28 Feb 2010 14:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 14:50:15 GMT]]></title><description><![CDATA[<p>die nummerierung kannst du beliebig machen, aber soweit ich informiert bin, geht das in c/c++ nur mit ints. ein switch case ist aber nichts anderes als verschachtelte if's also kannst dir das auch so zusammen bauen, dabei aber immer schön die binäre suche vor augen halten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>lg lolo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862343</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Sun, 28 Feb 2010 14:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 15:55:45 GMT]]></title><description><![CDATA[<p>Nein das geht &quot;leider&quot; nicht. Wie noobLolo schon meinte, man kann switch-Anweisungen nur mit Integer benutzen.</p>
<pre><code class="language-cpp">int test_zahl = 2;
switch(test_zahl)
{
    case 1:
        std::cout &lt;&lt; &quot;Ich werde nicht ausgeführt&quot;;
        break;
    case 2:
        std::cout &lt;&lt; &quot;Ich werde ausgeführt&quot;;
        break;
    case 3:
        std::cout &lt;&lt; &quot;Ich werde auch nicht ausgeführt :(&quot;;
        break;
    default:
        std::cout &lt;&lt; &quot;Da test_zahl 2 entspricht, bin ich nutzlos&quot;;
        break;
}
</code></pre>
<p>switch-Anweisungen kann man aber auch mit Enumerationen benutzen, da diese auch nur Aufzählungstypen sind.</p>
<pre><code class="language-cpp">enum Farbe
{
    Rot = 1,
    Gelb = 2,
    Blau = 3
};
...
Farbe f = Gelb;
switch(f)
{
    case Rot:
        std::cout &lt;&lt; &quot;Rot&quot;;
        break;
    case Gelb:
        std::cout &lt;&lt; &quot;Gelb&quot;;
        break;
    case Blau:
        std::cout &lt;&lt; &quot;Blau&quot;;
        break;
    default:
        std::cout &lt;&lt; &quot;Farblos&quot;;
        break;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1862351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862351</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Sun, 28 Feb 2010 15:55:45 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 16:00:18 GMT]]></title><description><![CDATA[<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>Wie noobLolo schon meinte, man kann switch-Anweisungen nur mit Integer benutzen.</p>
</blockquote>
<p>Geht auch mit char und short.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862354</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 28 Feb 2010 16:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 16:01:16 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>Wie noobLolo schon meinte, man kann switch-Anweisungen nur mit Integer benutzen.</p>
</blockquote>
<p>Geht auch mit char und short.</p>
</blockquote>
<p>Angeber. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862355</guid><dc:creator><![CDATA[DaChegger]]></dc:creator><pubDate>Sun, 28 Feb 2010 16:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 16:09:32 GMT]]></title><description><![CDATA[<p>Nein er hat ja Recht. Char kann ja auch Zahlen aufnehmen, ist nunmal aber nur 8 Bit groß. Aber wenn du schon short ansprichst, können wir auch noch long und bool hinzufügen :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862357</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Sun, 28 Feb 2010 16:09:32 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 18:33:30 GMT]]></title><description><![CDATA[<p>noobLolo schrieb:</p>
<blockquote>
<p>ein switch case ist aber nichts anderes als verschachtelte if's</p>
</blockquote>
<p>Klares NEIN.</p>
<p>Verschachtelte if's müssen der Reihe nach durchgelaufen und evaluiert werden bis eine Bedingung eintritt. switch/case dagegen ist ein Jump direkt zu dem case der zutrifft. Das ist ein ziemlicher Unterschied im Laufzeitverhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862411</guid><dc:creator><![CDATA[loks]]></dc:creator><pubDate>Sun, 28 Feb 2010 18:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 18:40:00 GMT]]></title><description><![CDATA[<p>loks schrieb:</p>
<blockquote>
<p>Unterschied im Laufzeitverhalten.</p>
</blockquote>
<p>Achja? Beweise mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862419</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 28 Feb 2010 18:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 18:53:05 GMT]]></title><description><![CDATA[<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>Nein das geht &quot;leider&quot; nicht.</p>
</blockquote>
<p>Das geht zum Glück nicht.</p>
<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Achja? Beweise mal!</p>
</blockquote>
<p>Ich hab dazu mal gelesen das switch zu einer Sprungtabelle zerlegt wird, weiß aber nicht wie sie aussieht, wäre auch Logisch da switch ja im Grudne nur aus == Vergleichen besteht. Und das ganze wäre deffinitiv schneller als irgendwelche If Ketten.</p>
<p>Das Verhalten das der Ersteller woltle wird in VB nterstützt und da ist es wirklich nur ein verschachteltes IF und im übrigen ne Design Katastrophe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862424</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 28 Feb 2010 18:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 18:59:28 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>loks schrieb:</p>
<blockquote>
<p>Unterschied im Laufzeitverhalten.</p>
</blockquote>
<p>Achja? Beweise mal!</p>
</blockquote>
<p>Beweisen ist ein bisschen schwer, da der Standard das nicht explizit verlangt. Aber in der Dokumentation der meisten Compiler steht drin, dass sie diese Art von Code erzeugen und normalerweise gibt es eine Option, diese Optimierung auszuschalten. Das hindert einen guten Optimierer natürlich nicht daran, auch aus verschachtelten if-Bedingungen einen solchen <em>jump-table</em> zu erzeugen, aber mit der switch-Anweisung macht man diese Optimierung wesentlich einfacher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862429</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 28 Feb 2010 18:59:28 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 19:05:47 GMT]]></title><description><![CDATA[<p>loks schrieb:</p>
<blockquote>
<p>noobLolo schrieb:</p>
<blockquote>
<p>ein switch case ist aber nichts anderes als verschachtelte if's</p>
</blockquote>
<p>Klares NEIN.</p>
<p>Verschachtelte if's müssen der Reihe nach durchgelaufen und evaluiert werden bis eine Bedingung eintritt. switch/case dagegen ist ein Jump direkt zu dem case der zutrifft. Das ist ein ziemlicher Unterschied im Laufzeitverhalten.</p>
</blockquote>
<p>also ich bilde mir ein das es in den meißtem programmier sprachen ähnlich ist, hab nur mal die erfahrung mit java gemacht, das ein switch abhängig von den zahlen entweder zu if/else abfragen oder einer lookuptable umgeformt wird bsp.</p>
<pre><code class="language-cpp">switch(x){
case 10025542:
break;
case 50:
break;
case 55334515:
break;
}
//daraus machst mir mal ne lookup table... und nachdem das eher schwer ist, wird es am ende iwie so daliegen
if(x&gt;10025542){
  if(x==55334515)
    ...
}else{
  if(x==10025542)
    ...
  else if(x==50)
      ...
}

//sollten die lücken kleiner sein könnte es sein das es zu einer lookuptable wird, was aber eher compiler abhängig ist...
</code></pre>
<p>lg lolo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862431</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Sun, 28 Feb 2010 19:05:47 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 19:13:12 GMT]]></title><description><![CDATA[<p>noobLolo schrieb:</p>
<blockquote>
<p>//sollten die lücken kleiner sein könnte es sein das es zu einer lookuptable wird, was aber eher compiler abhängig ist...</p>
</blockquote>
<p>also eigentlich sollten zahlenbereiche die so gut wie keine lücken enthalten fast immer zu einer lookuptable mutieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862439</guid><dc:creator><![CDATA[oloLboon]]></dc:creator><pubDate>Sun, 28 Feb 2010 19:13:12 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 19:14:42 GMT]]></title><description><![CDATA[<p>Danke eure Antworten haben mir sehr geholfen! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1862440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862440</guid><dc:creator><![CDATA[Honky]]></dc:creator><pubDate>Sun, 28 Feb 2010 19:14:42 GMT</pubDate></item><item><title><![CDATA[Reply to switch-anweisung on Sun, 28 Feb 2010 19:19:25 GMT]]></title><description><![CDATA[<p>nur das wir uns richtig verstehen, ich wollte nicht darauf hinaus, statt switch() irgendwelche if/else konstrukte zu verwenden, ich dachte nur falls das if schon bekannt ist hilft das ein bischen beim verständnis des switch, also bitte immer schön switch() verwenden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>lg lolo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1862441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1862441</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Sun, 28 Feb 2010 19:19:25 GMT</pubDate></item></channel></rss>