Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

128
Vistas
Why don't switch statements have curly braces?

The typical syntax for a switch-statement is:

switch(expression) {
  case one:
    // do something...
    break;
  case two:
    // do something else...
    break;
  case three:
  case four:
    // do something special
    break;
  default:
    // if nothing matches...
    break;
}

This syntax looks very Python-like (especially the colons and the way people indent it), contrary to the general syntax of languages such as JavaScript, Java, or C, where curly braces are used for most statements. Is there any specific reason?

I would expect that it should look more like:

switch(expression) {
  case (one) {
    // do something...
    break;
  } case (two) {
    // do something else...
    break;
  } case (three) case (four) {
    // do something special
    break;
  } default {
    // if nothing matches...
    break;
  }
}

I think the example I just provided looks like an if-else if-else statement, but shouldn't a switch statement match the syntax style?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

case statements are actually treated as labels in C, similar to those used by goto. Why it was designed like that is hard to answer and involves digging through various old publications by Dennis Ritchie.

More importantly for present day, you can use the switch with braces and it's even considered good practice. This is valid C (and C++):

switch(expression) 
{
  case one:
  {
    // do something...
    break;
  }
  case two:
  {
    // do something else...
    break;
  }
  case three:
  case four:
  {
    // do something special
    break;
  }
  default:
  {
    // if nothing matches...
    break;
  }
}

Now you can even declare local variables inside each case.

over 4 years ago · Santiago Trujillo Denunciar

0

In C-like programming languages, an identifier with a colon used as label to jump.

label:   
// ...
goto label;  

JavaScript doesn't have a goto statement but still has labels.

label1: {
  label2: {
    console.log('break nested block');
    break label1;
    console.log('unreachable');
  }
  console.log('unreachable');
}

In switch statement, each case has a label for it. And switch statement has its own list for those labels called jump table. When given value is matching, jump to that label and execute every code follows like goto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda