Что означает целочисленный суффикс J?

У меня есть следующий источник:

int main() { 000J; }

С gcc 4.8.4 он компилируется без ошибок. Я знаю, что существуют суффиксы типа L или U, но я ничего не нашел о J.

И что он делает?

Ответ 1

Я получаю предупреждение:

Воображаемые константы - это расширение GNU

Суффикс J - это расширение GNU, которое приводит к тому, что литерал имеет тип _Complex.

Дополнительная информация здесь: https://gcc.gnu.org/onlinedocs/gcc/Complex.html

Ответ 2

Как упоминалось в zenith, это расширение GNU для написания воображаемых литералов. Я действительно хочу прокомментировать обоснование использования j для этой цели, поскольку imallett интересуется, но у меня недостаточно репутации, чтобы прокомментировать ответ zenith. Я оставлю это как ответ в любом случае, поскольку это может быть полезно другим.

Как эта ссылка объясняет, что i и j могут использоваться для записи мнимых литералов с использованием этого расширения GNU. Причина, по которой для этого используется i, очевидна, но причина, по которой используется j, заключается в том, что j обычно используется для обозначения мнимой единицы в инженерии инженерных систем и систем управления для предотвращения путаницы как i уже используется для обозначения электрического тока в этих контекстах.