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

Min*_*mal 1 c language-features

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

int i = 7;
i = 5i;
printf("%d", i);
Run Code Online (Sandbox Code Playgroud)

和打印 - 0.

声明i = 5i显然毫无意义.那么为什么地球上的代码没有给出任何编译错误?为什么i变成了0

Oli*_*rth 7

这是一个GCC扩展,用于表示复数的虚部.

如果您使用-pedantic和编译,编译器会抱怨-Werror:http://ideone.com/PMlZr5.