在 C 语言中,为什么这个语句 'i = 5i' 编译并将 'i' 设置为零?

In C, why this statement- 'i = 5i' compiles & sets 'i' to zero?

在 GCC 中,以下 C 代码编译正确-

int i = 7;
i = 5i;
printf("%d", i);

并打印- 0.

i = 5i 的说法显然没有道理。那么到底为什么代码没有给出任何编译错误呢?为什么 i 变成 0?

这是一个GCC extension for representing the imaginary component of complex numbers

如果您使用 -pedantic-Werror 进行编译,编译器会报错:http://ideone.com/PMlZr5.