<?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 - wie aufbauen?]]></title><description><![CDATA[<p>hello @ll</p>
<p>also ich hab da ein paar probleme mit der switch anweisung und weiss nicht wo ich da anfangen soll <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">float anweisung;
float brot = 0;

switch(anweisung) {
case:
++brot;
break;
}

cout&lt;&lt;brot;
</code></pre>
<p>Dabei weiß ich nicht,was rauskommen würde.<br />
Aber wie baut man so eine Switch anweisung eigentlich auf und welche Parameter darf drinnen stehen in case: usw..?</p>
<p>em <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/topic/164637/switch-wie-aufbauen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 20:40:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164637.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Nov 2006 16:04:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to switch - wie aufbauen? on Fri, 10 Nov 2006 16:04:19 GMT]]></title><description><![CDATA[<p>hello @ll</p>
<p>also ich hab da ein paar probleme mit der switch anweisung und weiss nicht wo ich da anfangen soll <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">float anweisung;
float brot = 0;

switch(anweisung) {
case:
++brot;
break;
}

cout&lt;&lt;brot;
</code></pre>
<p>Dabei weiß ich nicht,was rauskommen würde.<br />
Aber wie baut man so eine Switch anweisung eigentlich auf und welche Parameter darf drinnen stehen in case: usw..?</p>
<p>em <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/1172313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172313</guid><dc:creator><![CDATA[em2006]]></dc:creator><pubDate>Fri, 10 Nov 2006 16:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 07:52:13 GMT]]></title><description><![CDATA[<p>Hallo em2006!</p>
<p>Also allgemein ist die switch-case-Verzweigung wie folgt aufgebaut:</p>
<pre><code class="language-cpp">switch(ausdruck)
{
    case ausdruck_a: anweisung_a;
                     break;
    case ausdruck_b: anweisung_b;
                     break;
}
</code></pre>
<p>Grundsätzlich kann eine switch-case-Anweisung mit Integer und Chars aber auch den ASCII-Werten, Oktalwerten und Hexwerten der Chars ausgeführt werden.</p>
<p>z.B.:</p>
<pre><code class="language-cpp">int zahl;

cout &lt;&lt; &quot;Eingabe einer Zahl: &quot;;
cin &gt;&gt; zahl;

switch(zahl)
{
    case 1: cout &lt;&lt; &quot;Zahl = 1&quot;;
            break;
    case 2: cout &lt;&lt; &quot;Zahl = 2&quot;;
            break;
    case 3: cout &lt;&lt; &quot;Zahl = 3&quot;;
            break;
}

getch();
return 0;
</code></pre>
<p>Mehr Infos gibts <a href="http://www.pronix.de/pronix-686.html" rel="nofollow">hier</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172315</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Sat, 11 Nov 2006 07:52:13 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 16:12:18 GMT]]></title><description><![CDATA[<p>wobei es wichtig ist generell ein &quot;default&quot; einzubauen um etwaige Fehler abzufangen <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/1172566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172566</guid><dc:creator><![CDATA[Kuldren]]></dc:creator><pubDate>Sat, 11 Nov 2006 16:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 16:20:39 GMT]]></title><description><![CDATA[<p>Man kann ein <em>switch</em> aber auch mit einer <em>return</em>-Anweisung 'verlassen' (man verlässt damit auch die 'übergeordnete' Funktion), weshalb das:</p>
<p>Kuldren schrieb:</p>
<blockquote>
<p>wobei es wichtig ist generell ein &quot;default&quot; einzubauen um etwaige Fehler abzufangen <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>
</blockquote>
<p>nicht unbedingt nötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172568</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 11 Nov 2006 16:20:39 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 16:27:34 GMT]]></title><description><![CDATA[<p>Wie hängt das mit return verlassen und default für fehler miteinander zusammen? Nur weil ich ein case mit return verlasse kann es immer noch fehler geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172577</guid><dc:creator><![CDATA[hä???]]></dc:creator><pubDate>Sat, 11 Nov 2006 16:27:34 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 19:12:42 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>Man kann ein <em>switch</em> aber auch mit einer <em>return</em>-Anweisung 'verlassen' (man verlässt damit auch die 'übergeordnete' Funktion), weshalb das:</p>
</blockquote>
<p>Schlechte Idee.</p>
<blockquote>
<p>Kuldren schrieb:</p>
<blockquote>
<p>wobei es wichtig ist generell ein &quot;default&quot; einzubauen um etwaige Fehler abzufangen <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>
</blockquote>
<p>nicht unbedingt nötig ist.</p>
</blockquote>
<p>Ich bin für das default.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172707</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sat, 11 Nov 2006 19:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 19:54:02 GMT]]></title><description><![CDATA[<p>Es geht aber!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172723</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 11 Nov 2006 19:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 19:57:13 GMT]]></title><description><![CDATA[<p>[20:51:49] &lt;M6eis6ter6&gt; hmhm... weil ichs grad im forum gelesen hab... was is so schlimm daran, aus nem switch mit einem return &quot;auszubrechen&quot;?<br />
[20:52:02] &lt;volkard&gt; return aus switch ist super.<br />
[20:52:12] &lt;volkard&gt; kein besseres switch-ende ist denkbar.<br />
[20:52:55] &lt;M6eis6ter6&gt; volkard: seh ich auch so...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172726</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 11 Nov 2006 19:57:13 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 20:00:01 GMT]]></title><description><![CDATA[<p>EDIT: war quatsch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172728</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 11 Nov 2006 20:00:01 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 20:52:04 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>:</p>
<p>Hm Begründung ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172750</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 11 Nov 2006 20:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 21:00:23 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>:<br />
Hm Begründung ?</p>
</blockquote>
<p>im zuge der einfachheit returned man, sobald das ergebnis feststeht.<br />
wenn pro case was ganz unterschiedliches getan wird (auch izde zu empfehlen), muß das also so sein.<br />
will man vorher gemeinsames {dann des switch} dann wieder gemeinsames machen, ist vermutlich der switch in einer eigenen funktion wohl daheim.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172752</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 11 Nov 2006 21:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 21:28:58 GMT]]></title><description><![CDATA[<p>also danke euch <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>1-&gt; kann man eigentlich auch bei der switch soetwas wie if daraus machen?<br />
2-&gt; gibt es keine andere Möglichkeit switch zu verwenden,ohne cin&gt;&gt; verwenden zu müssen,sondern einfach</p>
<pre><code class="language-cpp">switch(ein_int)
{
case ..: ..

...
</code></pre>
<p>eingeben muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172764</guid><dc:creator><![CDATA[em2006]]></dc:creator><pubDate>Sat, 11 Nov 2006 21:28:58 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 21:37:45 GMT]]></title><description><![CDATA[<p>em2006 schrieb:</p>
<blockquote>
<p>1-&gt; kann man eigentlich auch bei der switch soetwas wie if daraus machen?</p>
</blockquote>
<p>der switch wurde eingeführt, damit man nicht immer else if(a == b) schreiben muss, also ja ein swich ist eigentlich immer komplett durch eine verkettung von else if ketten ersetzbar, dies ist aber weil es den swich gibt wenig sinnvoll.</p>
<p>em2006 schrieb:</p>
<blockquote>
<p>2-&gt; gibt es keine andere Möglichkeit switch zu verwenden,ohne cin&gt;&gt; verwenden zu müssen,sondern einfach</p>
<pre><code class="language-cpp">switch(ein_int)
{
case ..: ..

...
</code></pre>
<p>eingeben muss?</p>
</blockquote>
<p>swich ist vollkommen unabhängig von cin, wenn du iostream nicht eingebunden hast, kannst du cin garnicht mal verwenden, aber swich funzt, also um deine Frage zu beantworten: Doch es funz genau so wie du geschrieben hast. Um die sacheübersichtlich zu machen verwendet man anstelle von einem int aber lieber ein enum, um den Zahlen eine Bedeutung zu geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172766</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Sat, 11 Nov 2006 21:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 22:25:33 GMT]]></title><description><![CDATA[<p>Krux schrieb:</p>
<blockquote>
<p>der switch wurde eingeführt, damit man nicht immer else if(a == b) schreiben muss, also ja ein swich ist eigentlich immer komplett durch eine verkettung von else if ketten ersetzbar, dies ist aber weil es den swich gibt wenig sinnvoll.</p>
</blockquote>
<p>falsch. c++ ist nicht basic.<br />
switch wurde eingeführt, weil man in asm springen kann auf eine in einer tabelle nachgeguckten adresse (ok, kann man in basic mit on...goto auf dem commodore 64 auch und mit goto x*5+8 auf dem sinclair zx81 auch, aber das gildet nicht, wir nehmen mal nur compilersprachen) und damit bei n sprungzielen O(1) hat und mit der if-orgie mit O(n) abkackt. desdawegen kann switch ja nur integrale konstanten.<br />
merke: c++ ist nur c mit ein wenig syntaktischem zucker und c ist nur ein etwas besserer makroassembler. wer mir das nicht glaubt, fragt bitte marc++us. der hat ahnung.<br />
daß c++ dennoch gut taugt, saugroße programme zu schreiben, hat etwas mit bescheidenheit zu tun. aber das ist nicht hier das thema. vielleicht nur als anker: die programmqualität folgt der problemverständnisqualität.</p>
<p>edit: beim durchlesen stelle ich fest, daß ich mein posting ja selber nicht verstehe. ich würde mich darüber freuen, wenn jemand, der mich versteht, es so umschreibt, daß meine oma es versteht. bei gelingen biete ich dem erklärenden für zwei jahre einen link von meiner www-haupt-seite auf des erklärers seite unter dem text &quot;ErklärBär&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172775</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 11 Nov 2006 22:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 22:35:42 GMT]]></title><description><![CDATA[<p>Also erstmal danke für Deine Erlärung oben <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>Also ich hab Deinen letzten Post schon verstanden <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="😃"
    /> ... Aber ich persönlich, finde es angenehmer, wenn du mal Groß- und Kleinschreibung achtest, dann ist es nämlich meiner Meinung nach einfacher, deine Erklärung(en) nachzuvollziehen <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="😉"
    /> (Nicht böse gemeint!!!).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172782</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 11 Nov 2006 22:35:42 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 22:49:48 GMT]]></title><description><![CDATA[<p>gute nacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Könnt ihr mir bitte erklären,wie man so eine switch schreibt bzw. beschreibt,wie ich so eine schreibe,ohne dass ich cin&gt;&gt; oder etwas ähnliches verwenden muss,nur wenn zbsp. die Werte</p>
<pre><code class="language-cpp">int apfel = 12;
int birne = 4;
</code></pre>
<p>drauf sind?</p>
<p>Und wie baut sich so eine switch auf?</p>
<p>lg. em2006 <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/1172790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172790</guid><dc:creator><![CDATA[em2006]]></dc:creator><pubDate>Sat, 11 Nov 2006 22:49:48 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sat, 11 Nov 2006 23:20:17 GMT]]></title><description><![CDATA[<p>Also, diese Frage wurde dir doch nun wohl schon hinreichend beantwortet. Gleich im ersten Antwort-Post hast du ein Beispiel für ein Switch-Konstrukt. Wenn dir das cin nicht paßt, dann nimmt halt die Zeile</p>
<p>cin &gt;&gt; zahl;</p>
<p>raus und belege an dieser Stelle Zahl auf andere Weise mit einem Wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1172805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172805</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 11 Nov 2006 23:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sun, 12 Nov 2006 02:34:44 GMT]]></title><description><![CDATA[<p>em2006 schrieb:</p>
<blockquote>
<p>gute nacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Könnt ihr mir bitte erklären,wie man so eine switch schreibt bzw. beschreibt,wie ich so eine schreibe,ohne dass ich cin&gt;&gt; oder etwas ähnliches verwenden muss,nur wenn zbsp. die Werte</p>
<pre><code class="language-cpp">int apfel = 12;
int birne = 4;
</code></pre>
<p>drauf sind?</p>
<p>Und wie baut sich so eine switch auf?</p>
<p>lg. em2006 <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>
</blockquote>
<p>Meinste sowas?</p>
<pre><code class="language-cpp">const int apfel = 12;
const int birne = 4;
int zahl = apfel;
switch ( zahl )
{
    case apfel: 
        // ...
    break;
    case birne: 
        // ...
    break;
    default:
        // ...
}
</code></pre>
<p>Wichtig ist das apfel und birne Konstanten sind, weswegen man ja auch normalerweise ein enum definiert.</p>
<pre><code class="language-cpp">enum Ost
{
    apfel, birne
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1172837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1172837</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Sun, 12 Nov 2006 02:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sun, 12 Nov 2006 15:42:14 GMT]]></title><description><![CDATA[<p>warum muss es konstant sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173077</guid><dc:creator><![CDATA[em2006]]></dc:creator><pubDate>Sun, 12 Nov 2006 15:42:14 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sun, 12 Nov 2006 16:21:58 GMT]]></title><description><![CDATA[<p>em2006 schrieb:</p>
<blockquote>
<p>warum muss es konstant sein?</p>
</blockquote>
<p>damit der compiler draus eine sprungzieltabelle basten kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173107</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 12 Nov 2006 16:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sun, 12 Nov 2006 16:42:00 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Krux schrieb:</p>
<blockquote>
<p>der switch wurde eingeführt, damit man nicht immer else if(a == b) schreiben muss, also ja ein swich ist eigentlich immer komplett durch eine verkettung von else if ketten ersetzbar, dies ist aber weil es den swich gibt wenig sinnvoll.</p>
</blockquote>
<p>falsch. c++ ist nicht basic.<br />
switch wurde eingeführt, weil man in asm springen kann auf eine in einer tabelle nachgeguckten adresse (ok, kann man in basic mit on...goto auf dem commodore 64 auch und mit goto x*5+8 auf dem sinclair zx81 auch, aber das gildet nicht, wir nehmen mal nur compilersprachen) und damit bei n sprungzielen O(1) hat und mit der if-orgie mit O(n) abkackt. desdawegen kann switch ja nur integrale konstanten.<br />
merke: c++ ist nur c mit ein wenig syntaktischem zucker und c ist nur ein etwas besserer makroassembler. wer mir das nicht glaubt, fragt bitte marc++us. der hat ahnung.<br />
daß c++ dennoch gut taugt, saugroße programme zu schreiben, hat etwas mit bescheidenheit zu tun. aber das ist nicht hier das thema. vielleicht nur als anker: die programmqualität folgt der problemverständnisqualität.</p>
<p>edit: beim durchlesen stelle ich fest, daß ich mein posting ja selber nicht verstehe. ich würde mich darüber freuen, wenn jemand, der mich versteht, es so umschreibt, daß meine oma es versteht. bei gelingen biete ich dem erklärenden für zwei jahre einen link von meiner www-haupt-seite auf des erklärers seite unter dem text &quot;ErklärBär&quot;.</p>
</blockquote>
<p>Zuviel gekifft? <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>Einfacher ausgedrückt, der Compiler bastelt sich aus dem Switch ein Array mit ganz vielen Funktionszeigern (oder zu mindest sehr ähnliche Zeiger) und benutzt dann den switch Wert als Index.</p>
<p>Also aus:</p>
<pre><code class="language-cpp">void foo(int i){
  switch(i){
    case 2:
      printf(&quot;a&quot;);
    break;
    case 5:
      printf(&quot;b&quot;);
    break;
    case 0:
      printf(&quot;c&quot;);
    break;
    default:
      printf(&quot;d&quot;);
    break;
  }
}
</code></pre>
<p>Macht der</p>
<pre><code class="language-cpp">void printa(){printf(&quot;a&quot;);}
void printb(){printf(&quot;b&quot;);}
void printc(){printf(&quot;c&quot;);}
void printd(){printf(&quot;d&quot;);}

void foo(int i){
  typedef void(*FPtr)();
  FPtr jmp_table[] = {&amp;printc, &amp;printd, &amp;printa, &amp;printd, &amp;printb};
  if(i&lt;0 || i &gt; 5)
    printd();
  else
    (*(jmp_table[i]))();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1173118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173118</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Sun, 12 Nov 2006 16:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sun, 12 Nov 2006 16:45:29 GMT]]></title><description><![CDATA[<p>Was hat den nun ein default mit den returns zu tun?</p>
<pre><code class="language-cpp">switch(i){
    case SERVER_REQUEST1:
       return serverRequest1();
    case SERVER_REQUEST2:
       return serverRequest2();
    default:
       return unknownRequest();
    break;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1173121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173121</guid><dc:creator><![CDATA[@CodeFinder]]></dc:creator><pubDate>Sun, 12 Nov 2006 16:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sun, 12 Nov 2006 17:05:19 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12048">@CodeFinder</a> schrieb:</p>
<blockquote>
<p>Was hat den nun ein default mit den returns zu tun?</p>
</blockquote>
<p>Die Frage lag mir auch auf den Lippen, hab sie aber (s.o.) wieder wegeditiert. Ich schätze er meint, dass es auch so geht:</p>
<pre><code class="language-cpp">switch (i) {
    case SERVER_REQUEST1:
       return serverRequest1();
    case SERVER_REQUEST2:
       return serverRequest2();
}

throw UnknownRequestException(); // or any other kind of error handling
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1173136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173136</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 12 Nov 2006 17:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to switch - wie aufbauen? on Sun, 12 Nov 2006 17:08:59 GMT]]></title><description><![CDATA[<p>C++ ist nicht wirklich gut geeignet für Exceptions, da man keine Kontrolle hat, dass sie gefangen werden, also lieber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173139</guid><dc:creator><![CDATA[FachmannFürExceptions]]></dc:creator><pubDate>Sun, 12 Nov 2006 17:08:59 GMT</pubDate></item></channel></rss>