У меня есть следующий источник:
int main() { 000J; }
С gcc 4.8.4 он компилируется без ошибок.
Я знаю, что есть суффиксы типа L или U, но я ничего не нашел в J.
Так что же это делает?
Я получаю предупреждение:
Мнимые константы являются расширением GNU
J
Суффикс — это расширение GNU, которое приводит к тому, что литерал _Complex
тип.
Больше информации здесь: https://gcc.gnu.org/onlinedocs/gcc/Complex.html
Как уже упоминалось в зените, это расширение GNU для написания мнимых литералов. Я действительно хочу прокомментировать обоснование использования j
для этого, как интересно, ималлету, но у меня недостаточно репутации, чтобы комментировать ответ Зенита. Я все равно оставлю это как ответ, так как это может быть полезно для других.
Как эта ссылка объясняет, как i
а также j
может использоваться для написания мнимых литералов с использованием этого расширения GNU. Причина по которой i
используется для этого, очевидно, но причина, почему j
используется также в том, что j
обычно используется для обозначения мнимой единицы в электротехнике и разработке систем управления для предотвращения путаницы как i
уже используется для обозначения электрического тока в этих контекстах.