Ответ 1
\/
looks like sup
and /\
looks like inf
. They could also be ∨ and
∧, respectively.
Я не помню, чтобы когда-либо видел их в K & R 2nd edition или в любой другой книге C.
Любой может "объявить" собственных операторов в C.... то есть, если один из них является гуру компилятора C и имеет исходный код для компилятора C!; -)
Другие вопросы для головоломки:
Googling для "/\ \/" естественно ничего не возвращает. У Википедии есть страница ни для \\nor \/. Но я заметил, что подобные операторы встроены в объекты XML-символов!
/*
* Return the next symbol from the input.
* peeksym is a pushed-back symbol, peekc is a pushed-back
* character (after peeksym).
* mosflg means that the next symbol, if an identifier,
* is a member of structure or a structure tag or an enum tag
*/
symbol()
{
...
case BSLASH:
if (subseq('/', 0, 1))
return(MAX);
goto unkn;
case DIVIDE:
if (subseq('\\', 0, 1))
return(MIN);
if (subseq('*',1,0))
return(DIVIDE);
...
}
\/
looks like sup
and /\
looks like inf
. They could also be ∨ and
∧, respectively.
Я не помню, чтобы когда-либо видел их в K & R 2nd edition или в любой другой книге C.
Ни/\nor/не определены как операторы в стандарте ISO C89, и я не думаю, что они были когда-либо определены в любой более ранней версии. Насколько я знаю, они определенно не определены на C99.
Здесь проект стандарта ANSI C89, для справки: http://flash-gordon.me.uk/ansi.c.txt
(Вероятно, вы являетесь жертвой какой-то странной магической магии препроцессора)
Если у вас есть пробелы, то:
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;
' представляется правдоподобным назначать maxiumum для b и c для a и a = b \/ c;
'для выполнения минимума (или, как указал Грег Хьюглилл, скорее наоборот). И в те времена было вероятным, что современные операторы +=
все еще были записаны как "=+
" и на самом деле были двумя токенами (никаких подтверждающих доказательств для этого утверждения, отсутствие памяти снова), поэтому гипотетическим "a =/\ b;
" (или в современной нотации "a /\= b;
" ) был бы оператор max-assign и т.д.
Мне также приходит в голову, что речь Thompson ACM Turing Award "" Размышления о доверии".
Я не уверен в \/
, но /\
является допустимой конструкцией. Он используется, чтобы поместить две слэши одной строки на отдельные строки. Например:
/\
/ Comment content
Это работает, потому что символ обратной косой черты избегает новой строки, и синтаксический анализатор продолжается так, как будто его там не было. Это не будет работать, если после обратного слэша есть пробел или если отступ второй косой черты с отступом. Из-за этого можно избежать столько строк, сколько вам нравится, как в
/\
\
\
\
\
/ Still a legal comment.
Обратные косые черты также могут использоваться в конце регулярных однострочных комментариев, чтобы они переходили к следующей строке, как в
// Yet another comment \
This line is in the comment \\
And so is this one!
C никогда не имел этих операторов.
Обычно/будет escape-кодом в некоторых строковых системах, не уверен, что /\ когда-либо имел какое-либо значение.
Я сомневаюсь, что они когда-либо имели в виду. Если они когда-либо делали это, это было давно. Единственные крупные операторы, которых я знаю, были удалены из C, были = + и = -, которые были ранними синонимами для + = и - =. Вы можете посмотреть на DMR Первоначальная страница C для подтверждения.
Я собираюсь предположить, что это ссылка на формальную символическую логику:
http://en.wikipedia.org/wiki/Table_of_logic_symbols
/используется для обозначения дизъюнкции (OR) /\ используется (реже) для обозначения конъюнкции (AND)
The Caret (^
) выполняет побитовое исключение или
Я не верю, что есть оператор "V". Это письмо "V" (или что-то похожее на это похоже). Кто-то может захотеть назвать переменную, которая.