Dubbio su CASE non eseguito dopo dichiarazione di INT

Salve,
perchè se dichiaro un int in un CASE, da li in poi non funziona? Si compila ma non tutti i CASE sono eseguiti. Ho provato su Arduino MEGA , riga int Valore = 1000; //
Grazie


void setup() {
  // initialize serial communication:
  Serial.begin(115200);
  Serial.print("a b c d e");

}

void loop() {

  if (Serial.available() > 0) {
    int inByte = Serial.read();

    switch (inByte) {
      case 'a':
        Serial.print("Ricevuto ");Serial.println(inByte);
        break;
      case 'b':
        Serial.print("Ricevuto ");Serial.println(inByte);
        break;
      case 'c':
        Serial.print("Ricevuto ");Serial.println(inByte);
        int Valore = 1000; // 
        break;
      case 'd':
        Serial.print("Ricevuto ");Serial.println(inByte);
        break;
      case 'e':
        Serial.print("Ricevuto ");Serial.println(inByte);
        break;
      default:
        Serial.print("Ricevuto non valido ");Serial.println(inByte);
    }
  }
}

Se vuoi dichiarare delle variabili all'interno di uno switch/case devi aggiungere un ulteriore scope (ovvero parentesi graffe)

switch(myvar){
  case 0: {
    int i = 0;
    ...
    ...
   break;
  }
  case 1:
    ...
    ...
}

Ma così la variabile è locale in case 0?

Si esatto. Devi tenere conto che il case xxxx: è soltanto un'etichetta per un salto condizionato gestito dallo switch, quindi puoi aggiungere quanti livelli di scope necessari per il tuo algoritmo.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.