¿Cuáles son los valores predeterminados de las variables estáticas en C?

En C, si un objeto que tiene una duración de almacenamiento estático no se inicializa explícitamente, entonces:
— si tiene un tipo de puntero, se inicializa como un puntero NULL;
— si es de tipo aritmético, se inicializa a cero (positivo o sin signo);
— si es un agregado, cada miembro se inicializa (recursivamente) de acuerdo con estas reglas;
— si es una unión, el primer miembro nombrado se inicializa (recursivamente) de acuerdo con estas reglas.

Por ejemplo, el siguiente programa imprime:
Valor de g = 0
Valor de sg = 0
Valor de s = 0

#include<stdio.h>
int g;  //g = 0, global objects have static storage duration
static int gs; //gs = 0, global static objects have static storage duration
int main()
{
  static int s; //s = 0, static objects have static storage duration
  printf("Value of g = %d", g);
  printf("\nValue of gs = %d", gs);
  printf("\nValue of s = %d", s);
  
  getchar();
  return 0;
}

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Referencias:
El estándar C99

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *