2015-02-26 2 views
0

Что касается языка программирования, описания последовательности побега не разрешает вывод следующей строки в визуальной студии 2008.Странное поведение Visual Studio 2008 с управляющей последовательностью

char * str = "??/abc"; 
printf("%s", str); 

печатает только «бв».
Проверка памяти, на который указывает ул, можно найти, что "??/a" работает в "\a"

Поиск на Google, мы не можем найти что-нибудь связанное с "??/" рассматривается как обратная косая черта.

+4

Ищите триграфы. – AProgrammer

+0

Возможный дубликат [Почему «\?» escape-последовательность в C/C++?] (http://stackoverflow.com/questions/19374878/why-is-an-escape-sequence-in-c-c) –

ответ

1

Чтобы расширить комментарий пользователя, C определяет набор триграфов для людей, чьи клавиатуры не имеют определенных символов. Они начинаются с '??', за которым следует другой символ. В частности, '?? /' является триграфом для '\'.

Этот перевод выполняется очень рано в процессе комплектования, поэтому компилятор просто видит '\ a'.

См. MSDN