问题
我之前看到一段 C 代码,
!ErrorHasOccured() ??!??! HandleError();
编译完全正确,但是??!??!是什么意思?我 Google 了一圈也没找到。
回答
??!是一个 三字符组,编译器会自动翻译成|,也就是说,上面的代码等同于,
!ErrorHasOccured() || HandleError();
为什么会有这种转换呢?早在 1960 年代的时候,那时候的打字机上面还没有那么多的字符(EBCDIC),像这四个字符就没有,
但是生活中又要用,所以他们就想到了这个办法。