Both your initializations example 1 and 2 are valid C99/C11 initializations. You can mix designation initializers and non-designation initializers in an initializer list.
EDIT: regarding your new example 3, the initialization is also valid. After initialization, example.c
has value 0
, example.i
has value 1
and example.f
has value (float) 1.0
.