Что на самом деле означает обратная косая черта? - PullRequest
5 голосов
/ 23 ноября 2010

Меня интересует обратная косая черта Java.Как компьютер или компилятор видит эту обратную косую черту и как она сохраняется на компьютере?

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

Например, нулевой символ \0 в C-программировании - это конец строки, но это один символили два символа, то есть обратный слеш + ноль?

Цель обратной косой черты - указывать для людей или указывать для 0-1 компьютера?

Ответы [ 3 ]

8 голосов
/ 23 ноября 2010

Обратная косая черта \ - это символ, такой же, как буква A, запятая , и число 4.В некоторых языках программирования, особенно C и его потомках (и, возможно, предках), он используется внутри строкового или символьного литерала для экранирования других символов.Например, '\a' представляет символ колокольчика и будет выдавать звуковой сигнал с компьютера, если вы напечатаете его (printf("%c", '\a')).

Как escape-символ на языке C, он в значительной степени допускается человеческой конструкциейкомпилятором, чтобы люди могли выразить, например, символ колокольчика.Скомпилированный код просто хранит символ - байт со значением 7. Просто чтобы быть абсолютно ясным, он не хранит \, за которым следует a.

Под другимВ этом контексте обратная косая черта что-то значит для программы во время выполнения.Наиболее известным примером этого является синтаксис регулярного выражения, в котором обратная косая черта экранирует другие символы, чтобы либо придать им особое значение, либо лишить их особого значения.Например, grep '\<foo\>' file.txt найдет строки со словом foo в файле file.txt.В этом случае обратная косая черта действительно существует во время выполнения и интерпретируется программой как экранирование для < и >, которые следуют за ними.В этом случае \< и \> вообще не представляют символы;они обозначают совпадение нулевой ширины с началом и концом слова соответственно.

7 голосов
/ 23 ноября 2010

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

В языках программирования на основе C (как и в других языках сценариев) они являются escape-символами . Они указывают, что символ справа от них должен интерпретироваться иначе, чем обычно. В вашем примере \0 - это нулевой терминатор, а обратный слеш указывает, что компилятор (и человек!) Должен интерпретировать 0 как нулевой символ, а не как ноль. Он будет рассматриваться как просто один символ, поскольку обратная косая черта сбрасывается после выполнения его функции - в этой последовательности он не имеет никакого значения, за исключением использования в качестве escape-символа.

0 голосов
/ 23 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...