¿GCC inicializa automáticamente las variables estáticas a cero?

Tengo una variable estática declarada pero no inicializada en una función. ¿Esta variable se inicializará a cero automáticamente?

static int idx; 

Sí, el estándar C de ISO / IEC 9899: 1999 también conocido como C99 (y C ++) dice que esto debe ser así. Consulte el artículo 10 en la sección 6.7.8 (“Inicialización”) de WG14 N1256 para obtener el texto exacto.

Como han señalado otros, es una buena práctica inicializar siempre variables estáticas:

 static int idx = 0; 

La razón para hacer esto no es porque algún comstackdor no siempre inicie las variables estáticas a cero (cualquier comstackdor que no haya podido realizar dicha inicialización se rompería definitivamente y no podría pretender ser un comstackdor de C o C ++), es Decir Significa: posiblemente la regla más básica de progtwigción.

Si bien los estándares dicen que sí … Las buenas prácticas indican que siempre debe inicializar las variables. Nunca se sabe cuándo cambia el comstackdor, o tiene que comstackrlo en otra máquina, quiere minimizar cualquier posibilidad de comportamiento inesperado.