C++ 整数后缀J是什么意思?
我有以下资料来源:C++ 整数后缀J是什么意思?,c++,c,integer,suffix,C++,C,Integer,Suffix,我有以下资料来源: int main() { 000J; } 使用GCC4.8.4,它编译时不会出错。 我知道有像L或U这样的后缀,但我没有找到关于J的任何东西 那么它做什么呢?我收到一个警告: 虚常数是GNU的扩展 J后缀是一个GNU扩展,它使文本为\u复合类型 这里有更多信息:正如zenith提到的,这是一个用于编写虚拟文本的GNU扩展。我真的很想评论一下使用j达到这个目的的理由,因为伊玛列特想知道,但我没有足够的声誉来评论zenith的答案。无论如何,我会把这个作为一个答案,因为它可能会
int main() { 000J; }
使用GCC4.8.4,它编译时不会出错。
我知道有像L或U这样的后缀,但我没有找到关于J的任何东西
那么它做什么呢?我收到一个警告:
虚常数是GNU的扩展
J
后缀是一个GNU扩展,它使文本为\u复合类型
这里有更多信息:正如zenith提到的,这是一个用于编写虚拟文本的GNU扩展。我真的很想评论一下使用j
达到这个目的的理由,因为伊玛列特想知道,但我没有足够的声誉来评论zenith的答案。无论如何,我会把这个作为一个答案,因为它可能会对其他人有所帮助
如前所述,i
和j
都可以使用此GNU扩展来编写虚拟文本。使用i
进行此操作的原因很明显,但是使用j
的原因是j
通常用于表示电气工程和控制系统工程中的假想单元,以防止混淆,因为i
已经用于表示这些上下文中的电流。确保使用-std=c++11-pedantic
编译避免编译器扩展。默认情况下,它将使用-std=gnu++11
(我想),这将启用非标准扩展。用<代码> -PoANDICT/<代码>标志,我得到了与天顶相同的警告,指向了答案。C++标签在这里被错误地放置在TBH中。C++没有“<代码> j>代码>。它是另一种类型,std::complex
,而不是\u complex
。它是标准C++,而不是扩展。@ MalSalter GCC已经将代码> J < /C>作为C++的扩展。@真的,G+标签是有意义的。@快乐一年尝试<代码> -PoANDICT/<代码>。我使用苹果LLVM 7,代码为->学究< <代码>。@ Yakk作为数学家,我对此非常反感。WTH是一个“Jamaginary数字”?@imallett与“Zinteger和Qationals是什么?”非常相似(当然我知道这是非英语来源的,但仍然如此)。@Ruslan Q来自“商”,这很有道理。Z来自德语。幸运的是,在我的论证中,“想象”在德语中是“想象”,它仍然以i
开头:)这个答案更好,因为数字变成了想象的,而不是复杂的,前者是后者的一个子集。i
和j
通常定义略有不同,例如exp(-ix)=exp(jx)
@Forss有趣-有没有关于这一主张的参考资料?@chux发现这解释了传统的差异。