这是什么意思??!??!操作员在C中做什么?

我看到一行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码集的子集

发表评论