switch Anweisung mit Variablen

Gast #2425757
Lesenswert?
• ▲
▼
Vereinfacht: Beim Switch baut der Compiler beim Übersetzen mit Hilfe der 
CASE Werte eine Sprungtabelle für die einzelnen Fälle auf. Dafür müssen 
die Werte beim Kompilieren bekannt sein. Die Inhalte der Variablen sind 
erst zur Laufzeit bekannt.
Persönliche Seite #2425812
Lesenswert?
• ▲
▼
M. B. schrieb:
> Dies funktioniert also nicht!??

Kann es auch nicht, stell Dir mal folgende Situation vor:
1
int Array[3] = {0};
2

3
switch (Dir)
4
{
5
  case Array[0] :
6
    //
7
    break;
8

9
  case Array[1] :
10
    //
11
    break;
12

13
  case Array[2] :
14
    //
15
    break;
16
}

Da alle Elemente des Arrays den gleichen Wert haben, würde dann 
welcher case-Fall ausgeführt werden?

Nein, switch/case geht nur mit ganzzahligen Konstanten. Nicht mit 
float-Werten, nicht mit Strings, und erst recht nicht mit Variablen.
Persönliche Seite #2425878
Lesenswert?
• ▲
▼
Rufus Τ. Firefly schrieb:
> Nein, switch/case geht nur mit ganzzahligen Konstanten. Nicht mit
> float-Werten, nicht mit Strings, und erst recht nicht mit Variablen.

Coder schrieb:
> Abschließend die Empfehlung nochmals C Grundlagen aktualisieren.

In PHP kann auch mit nicht konstanten Ausdrücken, mit beliebigen 
Datentypen und auch mehrdeutigkeiten gearbeitet werden (es wird dann der 
erste zutreffende Case gewählt) ich sehe nirgends das 'C' als Sprache 
genannt wurde...

Folgendes ist z.B. gültiges (wenn auch nicht schönes) PHP:
1
$section = $_GET['section'];
2
switch(true) {
3
 case ($section == "main"):
4
  echo "Welcome to main section";
5
  break;
6
 case ($section == "images"):
7
  echo "Look at this nice images";
8
  break;
9
 case ($section == "FAQ"):
10
  echo "Find frequently asked questions here";
11
  break;
12
 default:
13
  echo "The section ".$section." is unknown";
14
  break;
15
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren