Подтвердить что ты не робот

Значение `??? -` в коде С++

Я видел следующий код из некоторых устаревших кодов:

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

Что означает символ ???- в С++? Как я должен это понимать?

Спасибо!

4b9b3361

Ответ 1

На самом деле:

size_t a = 1 ? ~2 :0;

??- является trigraph для ~


Триграфы из старой эпохи... прежде чем некоторые из нас даже родились.

В те дни были некоторые символы, которые не всегда поддерживались. Незнающий программист попытается ввести такой символ только, чтобы найти, что он не существует на клавиатуре!

enter image description here
Источник изображения: http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305

Были добавлены триграфы, позволяющие программисту получить доступ к функциям этих символов, когда они не существовали (либо в кодировке, либо с клавиатуры).

В настоящее время они устарели и более эффективны в запутывании читателя, чем в обходе старых стандартов.

Итак, либо этот код действительно старый, либо автор был рывком.

Ответ 2

??- является триграфом для символа тильды ~; строка эквивалентна:

size_t a = 1 ? ~2 :0;

Ответ 3

??- является триграфом для символа ~. Некоторые другие триграфы:

 ??= for #

??/ for \

??' for ^

??! for |

Использование триграфов сейчас очень редко.