switch / case

Hallo,
kennt jemand eine Seit in der switch / case bis ins letzte Detail erklärt ist.
In anderen Programmiersprachen kann man zB

case 2 to 5

case < 2

usw

verwenden

In der Arduino- Befehlsreferenz wird immer nur die Prüfung auf einen bestimmten Wert beschrieben.

In wirklich jedem C oder C++ Grundlagen Buch wird das switch Case Dingen beschrieben.
In jedem.

In anderen Programmiersprachen kann man…

Das ist wahr!
Aber, welche Auswirkungen hat das auf C/C++?

wird immer nur die Prüfung auf einen bestimmten Wert beschrieben

Das ist falsch!
Es gibt auch noch “default:”
:o :o :o :o

case 2 to 5 oder ähnliches gibts nicht. Entweder mit default abfangen, oder andere Struktur zum Verarbeiteung der Variable aussuchen. Switch Case soll ich jedem C Buch / Online Tutorial erklärt sein

Versuche es mal hiermit: Arduino- Referenz

HotSystems:
Versuche es mal hiermit: Arduino- Referenz

Ich finde die Mühe, die sich da gemacht wurde bewundernswert.
Aber leider trägt vieles eher zur Verwirrung bei, als es Anfängern hilft.
Mir tut es teilweise weh, wenn ich das lese.
Ich muss meinen Blick abwenden....

Aus meiner Sicht, so noch nicht empfehlenswert.

sschultewolter:
case 2 to 5 oder ähnliches gibts nicht.

Da bist du aber auf dem Holzweg.

void setup() {
  Serial.begin(250000);
  byte select = 5;
  switch (select) {
    case 0:
      Serial.println(F("0"));
      break;
    case 1 ... 3:
      Serial.println(F("1, 2 oder 3"));
      break;
    case 4 ... 5:
      Serial.println(F("4 oder 5"));
      break;
    default:
      Serial.println(F("was anderes"));
  }
}
void loop() {}
4 oder 5

combie:
Aber leider trägt vieles eher zur Verwirrung bei, als es Anfängern hilft.

Das kann ich nicht nachvollziehen.
Es ist eine Übersetzung ins deutsche und somit für viele Anfänger die des englischen nicht mächtig sind in jedem Fall hilfreich.

Ich muss meinen Blick abwenden....

Aus meiner Sicht, so noch nicht empfehlenswert.

Ist ja auch kein Problem, wenn man alles kennt.

Das ist genau der springende Punkt!

Whandalls Beispiel habe ich noch nicht gesehen, so gut wie immer wird die Prüfung genau EINER Bedingung gezeigt.

Das hier scheint auch zu funktionieren:

switch( command )
{
case 1: case 2:
{
/* Programm, wenn Wert 1 oder 2 ist */
break;
}

Ich kann ar182 daher gut verstehen, dass er hier nachfragt.
Weniger gut kann ich verstehen, warum sich die Fortgeschrittenen in letzter Zeit immer so aufregen und gleich scharf schießen.

Ist ja auch kein Problem, wenn man alles kennt.

Das wäre schön.....
(aber auch sicher langweilig)

Das kann ich nicht nachvollziehen.
Es ist eine Übersetzung ins deutsche und somit für viele Anfänger die des englischen nicht mächtig sind in jedem Fall hilfreich.

Es ist teilweise falsch übersetzt.
Es werden Begriffe falsch verwendet.
Und damit provoziert es im Endeffekt Frust beim Beginner.

Aus meiner Sicht ist es viel schwerer irgendwas falsch gelerntes wieder aus dem Kopf zu bekommen, als gleich das richtige zu lernen.

Ich sage es nochmal, versuche es etwas klarer:
Ich finde den Vorsatz super!!
Ich bewundere die Arbeit, die da rein gesteckt wurde.
Aber inhaltlich ist das Ganze doch noch sehr ausbaufähig!
Und damit meine ich nicht unbedingt den Umfang, sondern eher die Korrektur der vielen vielen groben Schnitzer.

Auf mich macht dieses Tutorial den Eindruck, als hätte der Ersteller gerade eben an der Oberfläche der Programmierung gekratzt, und sein Halbwissen, und die mit Fantasie gefüllten Leerräume ins Netz gekippt.
Wie ich darauf komme?
Weil ich mich selber bei sowas erwische!
Weil ich schon viele gruselige Tutorials gesehen habe.

case 1 ... 3:

Standard C ist das nicht. Das ist eine gcc Erweiterung:
https://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html#Case-Ranges

Deshalb steht das in den normalen C Tutorials nicht drin. Aber gcc hat einige solcher netter Sachen die das Leben einfacher machen

Klaus_ww:
Ich kann ar182 daher gut verstehen, dass er hier nachfragt.
Weniger gut kann ich verstehen, warum sich die Fortgeschrittenen in letzter Zeit immer so aufregen und gleich scharf schießen.

Leider ist es so, dass 90% der Beiträge nicht um des helfen´s geschrieben werden.
Es wird vielmehr immer mehr Schmarren zum beste gegeben der keinen weiter hilft.
Viele in den Foren sollten sich vorher überlegen ob
z.B.
so etwas weiter hilft.

sschultewolter:
case 2 to 5 oder ähnliches gibts nicht. Entweder mit default abfangen, oder andere Struktur zum Verarbeiteung der Variable aussuchen. Switch Case soll ich jedem C Buch / Online Tutorial erklärt sein

Wenn er es dann doch nicht genau weiß.

Den offensichtlich geht es ja mit case 1 ... 3:

Danke Klaus_ww

Ich finde trauriger, dass die Suche nach 'range switch case' sofort als ersten Hit (von 14000) die Antwort liefert.

Manchmal verwendet man einfach nicht die passenden Suchbegriffe, das geht zumindest mir gerne so.

Und dann ist es doch der Sinn eines Forums, Hilfestellung zu geben.
"Suche nach 'range switch case'" und alles wäre in 1 Antwort erledigt gewesen.

Jetzt sind's 12 geworden und keiner fühlt sich richtig gut :confused:

Klaus_ww:
Jetzt sind's 12 geworden und keiner fühlt sich richtig gut :confused:

Genau das ist das Problem in den Foren.

ar182:
Genau das ist das Problem in den Foren.

Du solltest aber einfach mal dabei berücksichtigen, diese Beiträge sind freiwillig und im Rahmen vieler nur aus Hobbyinitiative gepostet.

Da kann man schon mal daneben liegen.
Wir alle sind nicht frei von Fehlern.

Sollte dich das an den Foren stören, dann steht es dir frei, eine Dienstleistung zu wählen, die du auch bezahlen darfst.

ar182:
Leider ist es so, dass 90% …

ar182:
Genau das ist das Problem in den Foren.

Erst outest du dich als Dokuleseverweigerer, und dann noch über die Hilfe schimpfen…

Sach mal, kommt dir das nicht selber ein bisschen dämlich vor?
Zumindest erscheint mir dein Verhalten arg absonderlich.

Wenn es Problem in Foren gibt, dann gehen sie oft von quengeligen “Fässer ohne Boden” aus.

Hallo HotSystems,
du zB das da gepostet

HotSystems:
Versuche es mal hiermit: Arduino- Referenz

glaubst du ernsthaft, dass ich so was noch nicht gefunden habe.

Meine Frage lautete wie folgt!

ar182:
Hallo,
kennt jemand eine Seit in der switch / case bis ins letzte Detail erklärt ist.
In anderen Programmiersprachen kann man zB

case 2 to 5

case < 2

usw

verwenden

In der Arduino- Befehlsreferenz wird immer nur die Prüfung auf einen bestimmten Wert beschrieben.

Und dann rotzt du mir ein 0815 Befehlsreferenz hin.
Hast du die Frage nicht verstanden?

HotSystems:
Du solltest aber einfach mal dabei berücksichtigen, diese Beiträge sind freiwillig und im Rahmen vieler nur aus Hobbyinitiative gepostet.

-oder produzieren nur Post (6186) weil die große Zahl an Posts so viel her macht.
Andere sammeln Facebook- Freund.

Gut das du mir die Augen geöffnet hast.

Nochmals, mit deinen Aussagen machst nur du dich lächerlich.
Mach gerne weiter so, dann haben wir wenigstens etwas zum Lachen.

Nur noch eins, wir alle können nicht hellsehen, also wissen wir nicht, wir schlecht dein Wissenstand ist.

Ich finde es schade, wenn man keine Kritik verträgt.

Hallo HotSystems, lies doch noch einmal ganz am Anfang.

Wo genau muss man da hellsehen?

"Suche nach 'range switch case'" und alles wäre in 1 Antwort erledigt gewesen.

Also, ich habe google nach "c++ switch case range" gefragt (About 547.000 results )

Die meisten ( stackoverflow ) kannten (wie ich als Microsoft geprägter) das für c-Programmierer merkwürdige Konstrukt " ... " auch nicht.

Ist wohl ein "strange but nice to have" Feature von gcc. Der Witz ist, dass es auf die zwei Leerzeichen vor und hinter den Punkten ankommt, sonst versucht auch der avr-gcc Compiler eine float-Zahl zu verstehen (die hier eigentlich gar nicht zulässig wäre, wenn man sie nicht zu int abschneiden könnte) und scheitert am zweiten Punkt.

Aber schön, dass das geklärt ist.