Objective-C - declaración de cambio

UN switchLa declaración permite probar la igualdad de una variable con una lista de valores. Cada valor se llama caso, y la variable que se enciende se verifica para cadaswitch case.

Sintaxis

La sintaxis de un switch declaración en el lenguaje de programación Objective-C es la siguiente:

switch(expression){
   case constant-expression  :
      statement(s);
      break; /* optional */
   case constant-expression  :
      statement(s);
      break; /* optional */
  
   /* you can have any number of case statements */
   default : /* Optional */
      statement(s);
}

Las siguientes reglas se aplican a switch declaración -

  • los expression usado en un switch La declaración debe tener un tipo integral o enumerado o ser de un tipo de clase en el que la clase tenga una única función de conversión a un tipo integral o enumerado.

  • Puede tener cualquier número de declaraciones de casos dentro de un conmutador. Cada caso va seguido del valor con el que se va a comparar y dos puntos.

  • los constant-expression para un caso debe ser del mismo tipo de datos que la variable en el conmutador, y debe ser una constante o un literal.

  • Cuando la variable que se enciende es igual a un caso, las declaraciones que siguen a ese caso se ejecutarán hasta que break se alcanza la declaración.

  • Cuando una break se alcanza la declaración, el conmutador termina y el flujo de control salta a la siguiente línea que sigue a la declaración del conmutador.

  • No todos los casos deben contener un break. Si nobreakaparece, el flujo de control caerá a través de los casos posteriores hasta que se alcance una ruptura.

  • UN switch declaración puede tener un opcional defaultcaso, que debe aparecer al final del interruptor. El caso predeterminado se puede utilizar para realizar una tarea cuando ninguno de los casos es verdadero. Nobreak es necesario en el caso predeterminado.

Diagrama de flujo

Ejemplo

#import <Foundation/Foundation.h>
 
int main () {
   
   /* local variable definition */
   char grade = 'B';

   switch(grade) {
   case 'A' :
      NSLog(@"Excellent!\n" );
      break;
   case 'B' :
   case 'C' :
      NSLog(@"Well done\n" );
      break;
   case 'D' :
      NSLog(@"You passed\n" );
      break;
   case 'F' :
      NSLog(@"Better try again\n" );
      break;
   default :
      NSLog(@"Invalid grade\n" );
   }
   
   NSLog(@"Your grade is  %c\n", grade );
   return 0;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

2013-09-07 22:44:26.928 demo[17555] Well done
2013-09-07 22:44:26.929 demo[17555] Your grade is  B