2017-01-04 15 views
0
#include<stdio.h> 
#include<conio.h> 
void main(){ 
printf("Hello%c%cWorld",92,110);/*92 is ASCII value of \ and 110 is ASCII value of n*/ 
getch(); 
} 

Вывод вышеуказанной программы Hello \ nWorld.Почему «% c% c», 92,110 в printf («% c% c», 92,110) не действует как escape-последовательность?

+1

Вы печатаете \, затем вы печатаете 'n'. Как это неверно или неожиданно? – e0k

+0

\ n не действует как escape-последовательность –

+1

Итак, вы знаете, @CJKoirala, это препроцессор C, cpp, который преобразует '\ n' в символ новой строки. 'printf' и компиляторы C вообще ничего не знают о' \ n' или других последовательностях. –

ответ

1

Интерпретация последовательности эвакуации происходит в фазе перевода, тогда как в коде код только появляется во время выполнения.

Кроме того, символ новой строки, \n не сочетание из двух отдельных char литералов \ и n, это одно значение, обозначаемое пу \n.

Смотрите в ASCII table, перевод строки имеет значение ASCII 10.

1

Применение «\ п» управляющая последовательность интерпретируется компилятором C и изменен в символ новой строки. Это не означает, что последовательность «\ n» автоматически превращается в символ новой строки. Что-то должно ожидать, чтобы интерпретировать его.

Сравните это:

#include <stdio.h> 
int main(){ 
    printf("Hello%c%cWorld",92,110); 
} 

Какие выходы Hello\nWorld (буквально)

с этим:

#include <stdio.h> 
int main(){ 
    printf("Hello%cWorld",10); 
} 

Какие выходы

Hello World

С фактическим символом новой строки (\012 в восьмеричной, 10 в десятичной или 0x0a в шестнадцатеричном)

0

ASCII для \ п 10 не «\» плюс «п» попробуйте следующий код, вы можете получить то, что вы хотите :

#include<stdio.h> 
#include<conio.h> 
void main(){ 
    printf("Hello%cWorld\n",10); 
    printf("\\nis%d",'\n'); 
    getch(); 
}