¿La declaración switch determina la declaración de case apropiada en el mismo tiempo de ejecución para cualquiera de los posibles valores de entrada? ¿Compara el valor de entrada con los bloques de case y salta al case apropiado cuando encuentra el valor que estaba buscando?
Considere el ejemplo a continuación. ¿La declaración de switch se ejecuta al mismo tiempo para input = 1 o input = 256 o se ejecuta más lentamente para el último valor?
int output, input = 256; switch( input ) { case 1: output = 1; break; case 2: output = 2; break; case 4: output = 3; break; case 8: output = 4; break; case 16: output = 5; break; case 32: output = 6; break; case 64: output = 7; break; case 128: output = 8; break; case 256: output = 9; break; default: output = 0; break; }¿La declaración de
switchse ejecuta al mismo tiempo parainput = 1oinput = 256o se ejecuta más lentamente para el último valor?
El idioma no especifica.
Las implementaciones comúnmente implementan algunas declaraciones de switch con el uso de tablas de salto, lo que hace que el switch tome aproximadamente la misma cantidad de tiempo, independientemente del valor de control. Sin embargo, también pueden usar múltiples ramas, exactamente como un árbol if / else if , que lleva más tiempo procesar algunos valores de control que otros. También pueden usar otras estrategias.
Aquellos que eligen entre múltiples posibilidades comúnmente lo hacen sobre la base de los valores de caso que deben admitirse.