What does the integer suffix J mean?

C++CIntegerSuffix

C++ Problem Overview


I have the following source:

int main() { 000J; }

With gcc 4.8.4 it compiles without errors. I know there are suffixes like L or U, but I didn't find anything about J.

So what does it do?

C++ Solutions


Solution 1 - C++

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 - C++

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhappyMOOyearView Question on Stackoverflow
Solution 1 - C++emlaiView Answer on Stackoverflow
Solution 2 - C++Jordan MeloView Answer on Stackoverflow