What does the integer suffix J mean?
Solution 1:
I get a warning:
Imaginary constants are a GNU extension
The J
suffix is a GNU extension, which causes the literal to be of a _Complex
type.
More info here: https://gcc.gnu.org/onlinedocs/gcc/Complex.html
Solution 2:
As zenith mentioned, this is a GNU extension for writing imaginary literals. I really want to comment on the rationale of using j
for this purpose as imallett is wondering but I don't have enough reputation to comment on zenith's answer. I'll leave this as an answer anyway as it might be helpful to others.
As this link explains, both i
and j
can be used to write imaginary literals using this GNU extension. The reason why i
is used for this is obvious, but the reason why j
is used as well is that j
is commonly used to denote the imaginary unit in electrical engineering and control systems engineering to prevent confusion as i
is already used to denote electrical current in those contexts.