C inicializador con elenco, ¿es esto peligroso?

Considera lo siguiente:

struct Foo { char c; int i; }; void Bar(void) { struct Foo f = {0}; // use zero initializer // do some stuff f = (struct Foo) {'h', 1}; // copy different data into f, is this dangerous? } 

¿Sería el reparto de arriba considerado peligroso? ¿Es este buen estilo?

No es una cuestión de estilo; ese código no se comstackrá sin la (struct Foo) . No es una conversión, es parte de la syntax de una característica de C99 conocida como literal compuesto .