带有演员的C初始化器,这有危险吗?

考虑以下:

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? } 

上面的演员会被认为是危险的吗? 这是好风格吗?

这不是风格问题; 没有(struct Foo)代码将无法编译。 它不是演员,它是C99特征的语法的一部分,称为复合文字