我看到一行C看起来像这样: !ErrorHasOccured() ??!??! HandleError(); 它编译正确,似乎运行正常。看起来它正在检查是否发生了错误,如果有错误,它会处理它。但我不确定它在做什么或者它是如何做的。看起来程序员正试图表达他们对错误的看法。 我从来没有??!??!在任何编程语言中看到过以前的版本,而且我无法在任何地方找到它的文档。(Google对搜索字词没有帮助??!??!)。它做了什么以及代码示例如何工作? ??!是一个翻译为的三字符|。所以它说: !ErrorHasOccured() || HandleError(); 由于短路,相当于: if (ErrorHasOccured()) HandleError(); 本周的大师(处理C ++,但在这里相关),我选择了这个。 三角形的可能起源或@DwB在评论中指出,由于EBCDIC很难(再次),它更可能发生。这篇关于IBM developerworks董事会的讨论似乎支持这一理论。 来自ISO / IEC 9899:1999§5.2.1.1,脚注12(h / t @ Random832): 三字符序列允许输入未在ISO / IEC 646中描述的不变代码集中定义的字符,ISO / IEC 646是七位US ASCII代码集的子集。 那么,为什么这一般存在可能与你的例子中存在的原因不同。 这一切都始于半个世纪前,将硬拷贝通信终端重新用作计算机用户界面。在最初的Unix和C时代,那是ASR-33电传打字机。 这个设备很慢(10 cps),噪音和丑陋,它的ASCII字符集视图以0x5f结束,因此它(仔细观察图片)没有任何键: { | } ~ 定义三字母以解决特定问题。我们的想法是,C程序可以使用ASR-33上的ASCII子集以及缺少高ASCII值的其他环境。 你的例子实际上是两个??!,每个意思|,所以结果是||。 然而,几乎按照定义编写C代码的人有现代设备1,所以我的猜测是:有人炫耀或自娱自乐,在代码中留下一种复活节彩蛋供你找。 它确实有效,它导致了一个广受欢迎的SO问题。