64

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

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

这个符号???-在 C++ 中是什么意思?我应该怎么理解?

4

3 回答 3

107

其实是:

size_t a = 1 ? ~2 :0;

??-是一个三元~


三合符来自一个古老的时代……在我们中的一些人出生之前。

在过去,有些字符并不总是得到支持。一个不知情的程序员会尝试输入这样的字符,却发现它在键盘上不存在!

在此处输入图像描述
图片来源:http ://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305

因此,添加了三元组以允许程序员在这些字符不存在时访问它们的功能(无论是在编码中还是从键盘中)。

如今,它们已经过时并且在混淆读者方面比绕过旧标准更有效。

因此,要么该代码真的很旧,要么作者是个混蛋。

于 2013-05-21T04:44:31.087 回答
15

??-是波浪~字符的三元组;该行相当于:

size_t a = 1 ? ~2 :0;
于 2013-05-21T04:45:04.013 回答
8

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

 ??= for #

??/ for \

??' for ^

??! for |

三元组的使用现在非常罕见。

于 2013-05-21T09:55:09.443 回答