2011-05-04 9 views

Respuesta

1

Respuesta corta, sí.

Las variables estáticas no inicializadas residen en el segmento .bss del ejecutable y el sistema operativo las asigna y las pone a cero al iniciar el programa, antes de invocar main.

+1

Todavía es una buena idea inicializarlo. – Dima

+0

@Dima: ¿un motivo en particular? –

+1

Es una buena práctica, en mi humilde opinión. De esta forma, nunca tendrá que pensar en qué variables se inicializan automáticamente y cuáles no. Digamos que luego decides que 'x' no debe ser estático, pero olvida inicializarlo, y ese error será un verdadero dolor de cabeza para encontrar. – Dima

5

El C99 Standard dice:

5.1.2 entornos de ejecución

... Todos los objetos de el almacenamiento estático debe ser inicializado (establecido en sus valores iniciales) antes del inicio del programa .

Y también se dice que una variable local definida con static calificador tiene "almacenamiento estático" y que, en ausencia de una inicialización de todos los objetos toman el valor 0 del tipo adecuado para ellos.

0

Todas las variables estáticas se almacenan en Datasection en la sección de memoria, en donde todas las variables se ajustan a los valores por defecto.

Cuestiones relacionadas