C ++代码中`??? - `的含义

时间:2013-05-21 04:43:10

标签: c++ trigraphs

我从一些遗留代码中看到了以下代码:

 size_t a = 1 ???- 2 :0;

符号???-在C ++中的含义是什么?我该怎么理解?

谢谢!

3 个答案:

答案 0 :(得分:101)

实际上是:

size_t a = 1 ? ~2 :0;

??-~

trigraph

Trigraphs来自一个古老的时代......在我们有些人出生之前。

在这些日子里,有些角色并不总是得到支持。一个不知情的程序员会尝试输入这样一个字符,只是发现它不存在于键盘上!

enter image description here
图片来源:http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305

因此添加了三字符以允许程序员在不存在时(在编码中或从键盘上)访问这些字符的功能。

如今,它们已经过时,在使读者感到困惑方面比在解决旧标准方面更有效。

所以要么代码真的很旧,要么作者是混蛋。

答案 1 :(得分:14)

??-是代字号~字符的三字母;该行相当于:

size_t a = 1 ? ~2 :0;

答案 2 :(得分:7)

??-~字符的三字母。其他一些三元组是:

 ??= for #

??/ for \

??' for ^

??! for |

三卦的使用现在非常罕见。