我从一些遗留代码中看到了以下代码:
size_t a = 1 ???- 2 :0;
符号???-
在C ++中的含义是什么?我该怎么理解?
谢谢!
答案 0 :(得分:101)
实际上是:
size_t a = 1 ? ~2 :0;
??-
是~
Trigraphs来自一个古老的时代......在我们有些人出生之前。
在这些日子里,有些角色并不总是得到支持。一个不知情的程序员会尝试输入这样一个字符,只是发现它不存在于键盘上!
图片来源: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 |
三卦的使用现在非常罕见。