https://stackoverflow.com/questions/7825055/what-does-the-operator-do-in-c?rq=1
!ErrorHasOccured() ??!??! HandleError();
这样的代码是什么意思呢?
今天又学到一个有意思但是没用的东西。在老老年间有些符号不是所有机器都能打出来的,比如|这样的符号可能就不在某些字符标准之中。我们现在知道|在编程语言里是非常重要的,往往和逻辑运算息息相关。那么人们在打不出来这个字之前是怎么使用的呢?
援引 Wiki:
Digraphs and trigraphs are sequences of two and three characters), respectively, that appear in source code and, according to a programming language‘s specification, should be treated as if they were single characters.
也就是说我们用两个或者是三个字符连在一起来表示一个打不出来的字符,比如??!就被用来表示|,所以这个代码在古早 C 标准中相当于就是:
!ErrorHasOccured() || HandleError();
然后因为逻辑或有短路效果,所以其实等价于:
if (ErrorHasOccured()) {HandleError();}
实际上是非常简单的逻辑。
