Вопрос:
Что делает этот код: (особенно, что такое обратная косая черта? )?
s23_foo += s8_foo * s16_bar;
Я добавил типы данных, потому что они могут быть релевантными.
Благодарим за помощь.
Лучший ответ:
Он позволяет вам продолжить вывод на следующую строку – обычно вам нужно только внутри макроса #define
Ответ №1
Обратные косые черты обозначают две разные вещи в С++, в зависимости от контекста.
Как продолжение линии
Вне строки кавычек (см. ниже) a используется как символ продолжения строки. Новая строка, которая следует в конце строки (не отображается), фактически игнорируется препроцессором, и следующая строка добавляется к текущей строке.
Итак:
s23_foo += s8_foo * s16_bar;
Анализируется как:
s23_foo += s8_foo * s16_bar;
Продолжение линии можно объединить. Это:
s23_foo += s8_foo * s16_bar;
Становится следующим:
s23_foo += s8_foo * s16_bar;
В С++ пробел не имеет значения в большинстве контекстов, поэтому в этом конкретном примере продолжение строки не требуется. Это должно компилироваться просто отлично:
s23_foo += s8_foo * s16_bar;
И на самом деле может быть полезно помочь разбивать страницы на код, когда у вас длинная последовательность терминов.
Поскольку препроцессор обработал #define до тех пор, пока не будет достигнута новая строка, продолжения строки наиболее полезны в определениях макросов. Например:
#define FOO() s23_foo += s8_foo * s16_bar;
Без символа продолжения строки FOO здесь будет пустым.
В качестве последовательности выхода
В строке кавычек в качестве разделителя используется обратная косая черта, чтобы начать 2-символьную escape-последовательность. Например:
«hellon»
В этом строковом литерале начинается escape-последовательность, причем escape-код равен n. n приводит к введению символа новой строки в строку. Это, конечно, означает, что если вы хотите, чтобы строка содержала символ , вам также необходимо избежать этого:
«hello\there»
выводит строку на экране:
приветесть
Различные escape-последовательности документируются здесь.