我看到一行C,看起来像这样:
!ErrorHasOccured() ??!??! HandleError();
它编译正确并且似乎运行正常。看起来它正在检查是否发生了错误,如果发生了,它就会处理它。但我不太确定它实际上在做什么或它是如何做的。看起来程序员确实正在尝试表达他们对错误的感受。
我从未见过??!??!
之前在任何编程语言中,我在任何地方都找不到它的文档。 (谷歌不支持搜索词,例如??!??!
)。它有什么作用以及代码示例如何工作?
??!
is a trigraph这意味着|
。所以它说:
!ErrorHasOccured() || HandleError();
由于短路,其等效于:
if (ErrorHasOccured())
HandleError();
本周大师(涉及 C++,但与这里相关),我在那里找到了这个。
三字母组的可能起源或者正如 @DwB 在评论中指出的那样,这更有可能是由于 EBCDIC 很困难(再次)。ThisIBM Developerworks 委员会上的讨论似乎支持这一理论。
摘自 ISO/IEC 9899:1999 §5.2.1.1,脚注 12(h/t@随机832):
三字母序列允许输入未在不变代码集中定义为的字符
ISO/IEC 646 中描述,它是七位 US ASCII 代码集的子集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)