我看到一行C,看起来像这样:
!ErrorHasOccursed()??!??!HandleError();
它编译正确,运行正常。它似乎在检查是否发生了错误,如果发生了,它会处理它。但我不确定它到底在做什么,或者它是如何做的。看起来程序员正试图表达他们对错误的感受
我从来没有看过《代码》以前是用任何编程语言编写的,我在任何地方都找不到它的文档。(谷歌不支持像?!
)这样的搜索词)。它做什么?代码示例如何工作
是一种转换为
|
的三角图。所以它说:
!ErrorHasOccurse()| | HandleError();
由于短路,这相当于:
如果(ErrorHasOccursed())
HandleError();
本周的Guru(处理C++,但这里相关),我在这里学到的。
trigraphs的可能起源,或者正如@DwB在评论中指出的,更可能是由于EBCDIC很难(再次)。IBMdeveloperWorks委员会上的讨论似乎支持这一理论
根据ISO/IEC 9899:1999§5.2.1.1,脚注12(h/[email protected]):
trigraph序列允许输入未在不变代码集中定义为的字符
ISO/IEC 646中描述,它是七位美国ASCII码集的子集