Спекуляции!
Если вокруг вас есть пробелы, то:
a /\ b ===> a / b
a \/ b ===> a / b
Логика: фаза предварительной обработки имеет дело с обратной косой чертой и символом после, и вполне вероятно, что обратная косая черта будет рассматриваться как пробел, а обратная косая черта - как косая черта.
Тем не менее, как компилятор SUN C (версия 12), так и компилятор GNU C (версия 4.4) отклоняют код, содержащий обратную косую черту. Но я мог легко поверить, что старые, предварительно стандартные препроцессоры C были менее осторожны с этим.
Соответствие стандартам
Операторы никогда не были частью официальной версии C.
Кроме того, стандарт не позволяет интерпретацию, которую я дал (раздел 5.1.1.2 Фазы перевода, как в C89, так и в C99) - но нестандартные компиляторы, конечно, не ограничены стандартом.
Добавлено после публикации источника:
Интересно! Таким образом, вполне вероятно, что 'a = b /\ c;
' назначит максимальное значение b и c для a, а 'a = b \/ c;
' сделает минимум (или, как указал Грег Хьюгилл, более вероятно, наоборот). И в те дни, было вероятно, что современные операторы '+=
' все еще были написаны как '=+
' и на самом деле были двумя токенами (, не подтверждающими доказательства этого утверждения; снова провал памяти ), поэтому гипотетический 'a =/\ b;
' (или, в современных обозначениях, 'a /\= b;
') был бы оператором максимального назначения и т. д.
Мне также приходит в голову, что речь Томпсона о премии Тьюринга ACM « Размышления о доверии к доверию » как-то актуальна.