AFAIK, complex characters were introduced precisely in the C99. However, if you use GCC, this feature is available as an extension. Citation GCC Documents :
ISO C99 supports complex literals. The combined literal looks like a listing containing an initializer. Its value is an object of the type specified in the listing containing the elements specified in the initializer; this value is lvalue. As an extension, GCC supports complex literals in C90 mode and in C ++ .
GCC:
GNU, GCC ( ISO C99, ). , , . . , .
static struct foo x = (struct foo) {1, 'a', 'b'};
static int y[] = (int []) {1, 2, 3};
static int z[] = (int [3]) {1};
:
static struct foo x = {1, 'a', 'b'};
static int y[] = {1, 2, 3};
static int z[] = {1, 0, 0};