Cuando estaba resolviendo conflictos de fusión, parecía que uno de los conflictos fue resuelto automáticamente por git en una de mis piezas de código.

El código que se procesó después del conflicto de fusión fue:

if(condition1)
{
   //Statement 1

}
{
  //Statement 2

}

El código se compiló y ejecutó sin ningún error. ¿El fragmento de código de la declaración 2 actúa como else aquí? Si es así, ¿cuál es el uso de la palabra clave else?

0
Karan Desai 15 nov. 2017 a las 12:37

2 respuestas

La mejor respuesta

Lo que tienes es una declaración if seguida de una declaración de bloque. La declaración de bloque introduce un nuevo alcance. Son dos construcciones separadas.

A menudo es útil introducir una declaración de bloque si desea limitar la vida útil de un objeto dentro de su código. Por ejemplo, es posible que solo desee adquirir un bloqueo para una parte de una función:

void DoSomething()
{
  // Stuff
  // Stuff
  // Stuff

  {
    Lock lock(mutex);    
  }

  // Stuff
  // Stuff
  // Stuff
}
1
Sean 15 nov. 2017 a las 09:51

No, el segundo {} no es una declaración else pero solo define un alcance, ¿intentó quitar las llaves y verificar la salida nuevamente?

1
Ayush. S 15 nov. 2017 a las 09:42