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

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

int main() { 000J; }

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

Так что же делать?

2 ответов


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

мнимые константы являются расширением GNU

на J суффикс-это расширение GNU, которое заставляет литерал быть _Complex тип.

подробнее здесь: https://gcc.gnu.org/onlinedocs/gcc/Complex.html


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

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