#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。爲什麼printf(「%c%c」,92,110)中的「%c%c」,92,110不作爲轉義序列?
#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。爲什麼printf(「%c%c」,92,110)中的「%c%c」,92,110不作爲轉義序列?
轉義序列的解釋發生在翻譯階段,而在您的代碼中,僅在序列號的序列在運行時出現。
此外,換行,\n
不是兩個單獨的char
文字\
和n
的組合,它是一個單一的值,表示爲NY \n
。
見ASCII table,一個換行具有10
在「\ n」轉義序列是由C編譯器解釋並改變到一個新的行字符的ASCII值。這並不意味着'\ 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
)
ASCII爲\ n爲10不是「\」加「N」試試下面的代碼,你可以得到你想要的東西:
#include<stdio.h>
#include<conio.h>
void main(){
printf("Hello%cWorld\n",10);
printf("\\nis%d",'\n');
getch();
}
您打印\,然後您打印'n'。這是不正確還是意外? – e0k
\ n不作爲轉義序列 –
因此,您知道@CJKoirala是C預處理器cpp,它將'\ n'轉換爲換行符。一般來說''printf'和C編譯器對'\ n'或其他序列一無所知。 –