Skip to content

Latest commit

 

History

History
29 lines (18 loc) · 910 Bytes

017 - C 中这个运算符是什么意思.md

File metadata and controls

29 lines (18 loc) · 910 Bytes

https://stackoverflow.com/questions/7825055/what-does-the-c-operator-do

问题

我之前看到一段 C 代码,

!ErrorHasOccured() ??!??! HandleError();

编译完全正确,但是??!??!是什么意思?我 Google 了一圈也没找到。

回答

??!是一个 三字符组,编译器会自动翻译成|,也就是说,上面的代码等同于,

!ErrorHasOccured() || HandleError();

为什么会有这种转换呢?早在 1960 年代的时候,那时候的打字机上面还没有那么多的字符(EBCDIC),像这四个字符就没有,

{ | } ~ 

但是生活中又要用,所以他们就想到了这个办法。