Espacios de nombres
Variantes
Acciones

Sentencias

De cppreference.com
< c‎ | language

Las sentencias son fragmentos del programa C que se ejecutan en secuencia. El cuerpo de cualquier función es un sentencia compuesto, que a su vez es una secuencia de sentencias y declaraciones:

int main(void)
{ // inicio de una sentencia compuesta
    int n = 1; // declaración (no una sentencia)
    n = n+1; // sentencia de expresión
    printf("n = %d\n", n); // sentencia de expresión
    return 0; // sentencia return
} // fin de la sentencia compuesta, fin del cuerpo de la función


Hay cinco tipos de sentencias:

1) Sentencias compuestas
2) Sentencias de expresión
3) Sentencias de selección
4) Sentencias de iteración
5) Sentencias de salto

Contenido

[editar] Etiquetas (Labels)

Cualquier sentencia puede ser "etiquetada", proporcionando un nombre seguido de dos puntos antes del enunciado en sí.

identificador : sentencia (1)
case expresión_constante : sentencia (2)
default : sentencia (3)
1) Objetivo para goto.
2) Etiqueta de caso en una sentencia switch.
3) Etiqueta por defecto en una sentencia switch.

Cualquier sentencia(pero no una declaración) puede ir precedida de cualquier número de etiquetas, cada una de las cuales declara que el identificador es un nombre de etiqueta, que debe ser único dentro de la función de encapsulamiento (en otras palabras, los nombres de las etiquetas tienen un alcance de función).

La declaración de la etiqueta no tiene efecto por sí misma, no altera el flujo de control ni modifica el comportamiento de la declaración que sigue de ninguna manera.

[editar] Sentencias compuestas

Una sentencia compuesta, o bloque, es una secuencia entre corchetes de sentencias y declaraciones.

{ sentencia | declaracion...(opcional) } (1)

La sentencia compuesta permite agrupar un conjunto de sentencias y sentencias en una unidad que se puede utilizar en cualquier lugar donde se espere una sentencia única (por ejemplo, en una sentencia if} o una sentencia iterativa):

if (expr) // inicio de la sentencia if
{ // inicio del bloque
  int n = 1; // declaracion
  printf("%d\n", n); // sentencia de expresión
} // fin del bloque, fin de la sentencia if

Cada sentencia compuesta introduce su propio ámbito de bloque.

Los inicializadores de las variables con duración de almacenamiento automáticos declarados dentro de un bloque y los declaradores VLA se ejecutan cuando el flujo de control pasa por encima de estas declaraciones en orden, como si fueran sentencias:

int main(void)
{ // inicio del bloque
  { // inicio del bloque
       puts("hello"); // sentencia de expresión
       int n = printf("abc\n"); // declaracion, imprime "abc", almacena 4 en n
       int a[n*printf("1\n")]; // declaracion, imprime "1", asigna 8*sizeof(int)
       printf("%zu\n", sizeof(a)); // sentencia de expresión
  } // fin de bloque, fin del ámbito de n y a 
  int n = 7; // n puede ser reutilizado
}

[editar] Sentencias de expresión

Una expresión seguida de punto y coma es una sentencia.

expresión (opcional) ; (1)

La mayoría de las sentencias de un programa C típico son sentencias de expresión, tales como asignaciones o llamadas de función.

Una sentencia de expresión sin expresión se denomina una sentencia nula. Se utiliza a menudo para proporcionar un cuerpo vacío a un bucle for o while. También puede utilizarse para llevar una etiqueta al final de una sentencia compuesta o antes de una declaración:

puts("hello"); // sentencia de expresión
char *s;
while (*s++ != '\0')
    ; // nsentencia nula

[editar] Sentencias de selección

Las sentencias de selección eligen una de varias sentencias dependiendo del valor de una expresión.

if ( expresión ) sentencia (1)
if ( expresión ) sentencia else sentencia (2)
switch ( expresión ) sentencia (3)
1) Sentencia if
2) Sentencia if scon una cláusula else
3) Sentencia switch

[editar] Sentencias de iteración

Las sentencias de iteración ejecutan repetidamente una sentencia.

while ( expresión ) sentencia (1)
do sentencia while ( expresión ) ; (2)
for ( cláusula_inicial ; expresión (opcional) ; expresión (opcional) ) sentencia (3)
1) Bucle while
2) Bucle do-while
3) Bucle for

[editar] Sentencias de salto

Las instrucciones de salto transfieren incondicionalmente el control de flujo.

break ; (1)
continue ; (2)
return expresión (opcional) ; (3)
goto identificador ; (4)
1) Sentencia break
2) Sentencia continue
3) Sentencia return con una expresión opcional
4) Sentencia goto

[editar] Referencias

  • Standard C11 (ISO/IEC 9899:2011):
  • 6.8 Statements and blocks (p: 146-154)
  • Standard C99 (ISO/IEC 9899:1999):
  • 6.8 Statements and blocks (p: 131-139)
  • Standard C89/C90 (ISO/IEC 9899:1990):
  • 3.6 STATEMENTS

[editar] Véase también

Documentación de C++ para Sentencias